持续等待的BackgroundWorker,不按预期定期发送

时间:2016-12-12 13:41:16

标签: c# asp.net .net wcf backgroundworker

代码运行正常几个小时然后失败再运行几个小时......

该项目是一个在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
            }
        }

1 个答案:

答案 0 :(得分:0)

我现在明白,不建议在AST.NET Web应用程序中运行/启动BackgroundWorker(尤其是使用long await / delay),因为它可以(un?)预期关闭

创建Windows服务/控制台应用程序/计划任务(如果适用)

否则,请遵循此artice

http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx