在C#中,是否可以立即退出正在进行的Parallel.For循环。在调用loopState.Stop()之后,以下代码可能需要一整秒的时间才能退出循环。立即退出c中的Parallel.For循环#
static void Main(string[] args)
{
Stopwatch watch = new Stopwatch();
Parallel.For(0, 50, (i, loopState) =>
{
Console.WriteLine("Thread:" + Thread.CurrentThread.ManagedThreadId + "\tIteration:" + i);
Thread.Sleep(1000);
if (i == 0)
{
watch.Start();
loopState.Stop();
return;
}
});
Console.WriteLine("Time Elapsed since loopState.Stop(): {0}s", watch.Elapsed.TotalSeconds);
Console.ReadKey();
}
输出
Thread:10 Iteration:0
Thread:6 Iteration:12
Thread:11 Iteration:24
Thread:12 Iteration:36
Thread:13 Iteration:48
Thread:13 Iteration:49
Thread:12 Iteration:37
Time Elapsed since loopState.Stop(): 0.9999363s
有什么办法更快地做到这一点? 谢谢!
不幸的是,我的表现沉重的呼叫是在第三方库内,但我可以用这种技术提高我的表现。谢谢! – rob
不理会最后的评论。这实际上在性能上有很大的不同。虽然我用loopState.ShouldExitCurrentIteration而不是tokenSource。 – rob
@rob很高兴为你效劳。感谢您的反馈意见。 – FrostyFire