我有一个 Windows 服务,它在启动时启动一项任务
这个任务有一个 while 循环,在执行一次迭代后它会休眠 5 分钟。
当我停止服务时,首先取消任务,然后执行其他一些操作
如果任务处于睡眠状态,它只会在它醒来时被取消,我希望它被取消,即使它正在睡眠并且不想等待唤醒它。
以下是代码
Task controllerTask = Task.Factory.StartNew(() =>
{
var interval = 300;
while(true)
{
if (cancellationToken.IsCancellationRequested)
break;
Thread.Sleep(interval * 1000);
if (cancellationToken.IsCancellationRequested)
break;
//SOME WORK HERE
}
}, cancellationToken);
有什么办法吗?
编辑:我无法使用 Task.Delay ,我在 System.Threading.Tasks.Task 命名空间中找不到它,因为我使用的是 .Net Framework 4.0 而不是 4.5
有没有其他更好的解决方案适用于 4.0。