C#Threading Web应用程序中的问题

sup*_*tar 5 c# asp.net multithreading

我有一个Web应用程序,在代码隐藏页面中,我有一个按钮单击事件.

protected void btnUpload_Click(object sender, EventArgs e)
        {
            TimerEvent TE = new TimerEvent();
            TE.TimerEvents();
            Server.Transfer("~/Jobs.aspx");
        }
Run Code Online (Sandbox Code Playgroud)

我有一个方法调用TimerEvents(),它可能需要10-15秒才能将控制权恢复到服务器传输.所以我希望服务器传输线在方法调用的同时执行.

我在这里试过线程:

    TimerEvent TE = new TimerEvent();
    Thread t = new Thread(TE.TimerEvents);
    t.IsBackground = true;
    t.Start();           
    Server.Transfer("~/Jobs.aspx");
Run Code Online (Sandbox Code Playgroud)

但是在方法完成之前不进行转移.我怎样才能做到这一点?

ten*_*nor 5

这种设计并不理想.即使你做对了,由于多线程代码和Server.Transfer()调用的混合,你很可能会遇到问题.

ASP.NET应用程序中还存在有关多线程的问题.

我建议你重新设计你的应用程序,以便你有一种排队长期运行任务的队列.然后,您可以拥有一个逐个处理队列中任务的服务.

从您的Web应用程序,您现在可以:

  1. 将长时间运行的TimerEvents任务排队到外部服务.

  2. 调用Server.Transfer()

  3. 在新页面("〜/ Jobs.aspx")上,调用外部服务以在需要时获取结果.