长期等待的背景工作者,未预期的定期射击



代码可以正确运行几个小时,然后失败,然后再运行几个小时...

该项目是一个具有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

最新更新