代码运行正常几个小时然后失败再运行几个小时......
该项目是一个在IIS上运行的具有WCF服务的Web应用程序。 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
}
}
答案 0 :(得分:0)
我现在明白,不建议在AST.NET Web应用程序中运行/启动BackgroundWorker(尤其是使用long await / delay),因为它可以(un?)预期关闭
创建Windows服务/控制台应用程序/计划任务(如果适用)
否则,请遵循此artice
http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx