代码可以正确运行几个小时,然后失败,然后再运行几个小时...
该项目是一个具有WCF服务的Web应用程序,在IIS上运行。BGW在application.start()
上启动我怀疑它是因为IIS回收。我的方法错了吗?我该如何使BGW可靠地运行
public void MyWorks()
{
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerSupportsCancellation = true;
worker.DoWork += new DoWorkEventHandler(DoWork);
worker.RunWorkerAsync();
}
private static async void DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
int delay = 60;
while (!worker.CancellationPending)
{
await Task.Delay(TimeSpan.FromMinutes(delay));
//do things here
}
}
我现在知道,不建议在AST.NET Web应用程序中运行/启动背景工作者(尤其是长期等待/延迟),因为它可能会(un?)预期关闭
在适用的情况下,创建Windows Service/Console应用程序/计划的任务
否则,请遵循此艺术
http://www.hanselman.com/blog/howtorunbackgroundtasksinaspnet.aspx