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)
但是在方法完成之前不进行转移.我怎样才能做到这一点?
这种设计并不理想.即使你做对了,由于多线程代码和Server.Transfer()调用的混合,你很可能会遇到问题.
ASP.NET应用程序中还存在有关多线程的问题.
我建议你重新设计你的应用程序,以便你有一种排队长期运行任务的队列.然后,您可以拥有一个逐个处理队列中任务的服务.
从您的Web应用程序,您现在可以:
将长时间运行的TimerEvents任务排队到外部服务.
调用Server.Transfer()
在新页面("〜/ Jobs.aspx")上,调用外部服务以在需要时获取结果.
| 归档时间: |
|
| 查看次数: |
1253 次 |
| 最近记录: |