Combine ManualResetEvent and token.WaitHandle.WaitOne
本文关键字:WaitHandle WaitOne token and ManualResetEvent Combine | 更新日期: 2023-09-27 18:03:12
我得到了:
internal void Start(CancellationToken token)
{
while (!token.IsCancellationRequested)
{
//do work
token.WaitHandle.WaitOne(TimeSpan.FromSeconds(67));
}
}
所以我在新的Task
中开始这个方法,并在循环中做一些工作,直到我需要用token
取消它有时我需要强制新的循环迭代,而不是等待这67秒。我想我需要这样的东西:
public ManualResetEvent ForceLoopIteration { get; set; }
同时我不明白如何使用token。也许是WaitHandle.WaitAny()
之类的?
你选对了,试试这个:
WaitHandle.WaitAny(
new[] { token.WaitHandle, ForceLoopIteration },
TimeSpan.FromSeconds(67));
等待出现以下其中一个
- 请求取消
token
-
ForceLoopIteration
是设置 - 超时时间已经过67秒