休眠一定时间但能够被来自 CancellationToken
的 IsCancellationRequested
打断的最佳方法是什么?
我正在寻找适用于 .NET 4.0 的解决方案。
我想写
void MyFunc (CancellationToken ct)
{
//...
// simulate some long lasting operation that should be cancelable
Thread.Sleep(TimeSpan.FromMilliseconds(10000), ct);
}
最佳答案
我刚刚在这里写了博客:
CancellationToken and Thread.Sleep
简而言之:
var cancelled = token.WaitHandle.WaitOne(TimeSpan.FromSeconds(5));
在您的上下文中:
void MyFunc (CancellationToken ct)
{
//...
// simulate some long lasting operation that should be cancelable
var cancelled = ct.WaitHandle.WaitOne(TimeSpan.FromSeconds(10));
}
关于c# - 如何在 .NET 4.0 中请求超时或取消之前为 "sleep",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18715099/