如果在ASP.NET完成页面处理之前触发后台线程执行,会发生什么?

cru*_*zer 5 asp.net multithreading behavior

如果我在ASP.NET页面生命周期完成之前分离一个线程来执行一个长时间运行的进程会发生什么?ASP.NET运行时是否会终止该线程?这会导致未定义的行为吗?

这是代码的示例,它在Page_Load事件中旋转后台线程.这是安全的吗?

protected void Page_Load(object sender, EventArgs e)
{
    Thread newThread = new Thread(new ThreadStart(SomeLongRunningMethod));
    newThread.IsBackground = true;
    newThread.Start();
}

private void SomeLongRunningMethod()
{
    // some long running process goes here...
}
Run Code Online (Sandbox Code Playgroud)

Run*_*tad 1

我已经对相同类型的代码进行了一些实验,在单独的线程中进行了一些耗时的日志记录。看起来效果不错,但我还没有在生产环境中测试过。

你的代码和我的代码之间的唯一区别是我使用了线程池而不是设置一个新线程。

您可能会复制任何请求数据和其他页面信息,以避免它们被丢弃,但除此之外,我认为这应该很好用。