Page_Load完成,保持线程活着?

时间:2014-07-13 15:20:47

标签: asp.net asynchronous task

我在asp.net的Page_Load函数中进行测试

protected void Page_Load(object sender,EventArgs e)     {

 Task.Factory.StartNew(() =>
    {
        while (true)
        {
            Response.Write("Hi");
            Thread.Sleep(100);
        }
    });

    Thread.Sleep(2000);
    Response.Write("hello");
}

我发现事实是当页面加载功能完成时,任务将被终止。

这是真的吗?或者任务还活着?

如果我希望任务仍然存在,我该怎么办?

1 个答案:

答案 0 :(得分:0)

在多个线程上使用Response对象并不安全。此外,使用Response请求结束后也不会成功。我们假设您已正确锁定它:

任务没有被杀死,因为ASP.NET甚至不知道该任务存在。怎么可能呢?您永远不会向ASP.NET提供该任务的引用。可能,您还没有真正查看过您收到的错误消息。这项任务可能有例外。

如果您希望该任务继续运行,请不要以不安全的方式使用ASP.NET对象。