在网页上开始一个新的线程按钮点击
本文关键字:线程 按钮 一个 网页 开始 | 更新日期: 2023-09-27 18:19:24
我继承了一个遗留的应用程序,有一些代码可以简化为:
protected void SomeButton_Click(object sender, EventArgs e)
{
var otherThread = new System.Threading.Thread(delegate()
{
System.Threading.Thread.Sleep(20000);
FireAnAsyncProcess();
});
otherThread.Start();
thankYouPanel.Visible = true;
otherPanel.Visible = false;
}
FireAnAsyncProcess()
似乎间歇性地无法运行。这当然可能是很多事情,但我想知道:
考虑到上述20000
的暂停,即使在按钮点击处理后,FireAnAsyncProcess()
也总是被调用吗?不管调用它的线程发生了什么,新线程都会被调用吗?
编辑:FireAnAsyncProcess()
的结果/结果不需要在网页上,页面不打算等待他们。相反,它试图启动线程,并假设它被触发。
这是web环境-每个请求都在自己的线程上下文中处理,Thread.Start()
是没有用的:子线程将在处理请求后终止,父线程将终止。
所以如果你需要在Button_Click
上运行一些工作,你应该托管一个WCF服务或Windows服务或一些能够接受来自web应用程序的消息并在后台运行作业的东西。