相关疑难解决方法(0)

如何更快地取消任务

我有一个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);
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

编辑:我无法使用Task.Delay,我在System.Threading.Tasks.Task命名空间中找不到它,因为我使用的是.Net Framework 4.0而不是4.5

有没有其他更好的解决方案适用于4.0.

c# multithreading .net-4.0

2
推荐指数
1
解决办法
1554
查看次数

标签 统计

.net-4.0 ×1

c# ×1

multithreading ×1