在.NET Web应用程序中使用计时器生成异步线程

时间:2013-08-28 08:00:40

标签: .net asynchronous

产生一个充当轮询服务但在.NET Web应用程序内部运行的异步线程是否有任何危险或问题?

例如:

public class Global : HttpApplication
{
    protected void Application_Start()
    {
        var timer = new Timer();
        timer.Interval = 1000;
        timer.Elapsed += TimerElapsed;
    }

    private void TimerElapsed(object sender, ElapsedEventArgs e)
    {
        // Do work
    }
}

鉴于应用程序正在自己的应用程序池中运行,是否应该注意一些隐藏的含义?

1 个答案:

答案 0 :(得分:0)

Phil Haack很好地解释了为什么这是一个坏主意:http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/

他有一个可用的NuGet包,它是在Web服务器上运行计时器的更好选择:http://www.nuget.org/packages/webbackgrounder