在网页上开始一个新的线程按钮点击

本文关键字:线程 按钮 一个 网页 开始 | 更新日期: 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应用程序的消息并在后台运行作业的东西。