死循环执行的任务为何一段时间后就停止了

await doWork();

private async Task doWork()
        {
            while (true)
            {
                await my_work();
                await Task.Delay(1000 * 5);
            }
        }

写了个定时循环执行的任务,但是一般运行个1天左右,打断点在while里,就无法命中断点了,程序似乎也不再执行循环体了。

这会是什么鬼情况?

阅读 7.5k
2 个回答

是发布在IIS的web程序吗?如果是的话,IIS程序会在一段时间无人访问后(一般20分钟)自己释放掉程序池。
解决方案有很多:

  1. 自己写一个任务调用自己的网站(模拟用户访问);
  2. Global.aspx 的 Application_End 方法里写一个调用自己的网站的 HttpClient ;
  3. 把你的任务用 window 服务的方式写,window 服务可以设置自己开机启动,异常关闭后自启动等等。

异步调用基本没法命中

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进