【发布时间】:2013-07-11 15:34:27
【问题描述】:
我有一个在启动时启动任务的 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。
【问题讨论】:
标签: c# multithreading .net-4.0