gpt4 book ai didi

.net - sleep .NET任务,在CancellationTokenSource.Cancel()上唤醒

转载 作者:行者123 更新时间:2023-12-03 12:52:41 25 4
gpt4 key购买 nike

我有必须定期轮询外部资源的代码。简化后,它看起来像:

CancellationTokenSource cancellationSource = new CancellationTokenSource();

Task t = Task.Factory.StartNew(() =>
{
while (!cancellationSource.IsCancellationRequested)
{
Console.WriteLine("Fairly complex polling logic here.");

// Finishes sleeping before checking for cancellation request
Thread.Sleep(10000);
}
},
cancellationSource.Token);

我该如何编码10秒延迟,以便在调用cancelSource.Cancel()时会被中断?

最佳答案

如何使用超时为10秒的监视器。您可以使用Monitor类的Pulse方法唤醒 sleep 线程。

线程1:

Monitor.Wait(monitor, 10000);

线程2:
Monitor.Pulse(monitor);

或者,您可以查看 ManualResetEvent.WaitOne。以10秒钟的超时来阻塞线程。要解除阻止,请向事件发送信号。

编辑:

CancellationToken具有.WaitHandle属性:

Gets a WaitHandle that is signaled when the token is canceled.



您可以等待该句柄发出信号,超时时间为10秒?

关于.net - sleep .NET任务,在CancellationTokenSource.Cancel()上唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12681400/

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