【问题标题】:Page_Load is finished, keep the thread alive?Page_Load 完成,保持线程存活?
【发布时间】:2014-07-13 15:20:47
【问题描述】:

我在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");
}

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

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

如果我希望任务还活着,我该怎么办?

【问题讨论】:

  • 我错了。页面加载功能完成后,任务不会被终止。

标签: asp.net asynchronous task


【解决方案1】:

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

该任务没有被终止,因为 ASP.NET 甚至不知道该任务存在。怎么可能?您永远不会将该任务的引用提供给 ASP.NET。可能,您还没有真正查看收到的错误消息。该任务可能有异常。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多