gpt4 book ai didi

c# - 如果超时没有完成任务,Task.Wait(int) 是否会停止任务?

转载 作者:IT王子 更新时间:2023-10-29 04:08:45 26 4
gpt4 key购买 nike

我有一个任务,我希望它能在一秒钟内运行,但如果它花费的时间超过几秒钟,我想取消该任务。

例如:

Task t = new Task(() =>
{
while (true)
{
Thread.Sleep(500);
}
});
t.Start();
t.Wait(3000);

请注意,等待 3000 毫秒后到期。超时过后任务是否被取消或任务是否仍在运行?

最佳答案

Task.Wait() 等待任务完成指定时间段,并返回任务是否在指定时间(或更早)内完成。任务本身不被修改,也不依赖于等待。

阅读精彩系列:Parallelism in .NET , Parallelism in .NET – Part 10, Cancellation in PLINQ and the Parallel class作者:里德·科普西

并且:.NET 4 Cancellation Framework/Parallel Programming: Task Cancellation

检查以下代码:

var cts = new CancellationTokenSource();

var newTask = Task.Factory.StartNew(state =>
{
var token = (CancellationToken)state;
while (!token.IsCancellationRequested)
{
}
token.ThrowIfCancellationRequested();
}, cts.Token, cts.Token);


if (!newTask.Wait(3000, cts.Token)) cts.Cancel();

关于c# - 如果超时没有完成任务,Task.Wait(int) 是否会停止任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4036198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com