c# - 如何在 .NET 4.0 中请求超时或取消之前为 "sleep"

标签 c# .net-4.0 sleep cancellation cancellationtokensource

休眠一定时间但能够被来自 CancellationTokenIsCancellationRequested 打断的最佳方法是什么?

我正在寻找适用于 .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/

相关文章:

Python: "global name ' 时间'未定义”

Python asyncio wait_for 同步

Linux多线程,暂停一个线程,同时继续运行同一进程中的其他线程

c# - 当 IsEmpty == true 时,为什么 ConcurrentQueue<T>.Count 不返回 0?

dynamic - 如何将 void 方法调用表示为 DynamicMetaObject.BindInvokeMember 的结果?

c# - 当输出比控制台宽时,如何防止自动换行?

.net - 当查看模型类型为超过 4 项的元组时,Asp.net mvc 2 .net 4.0 错误

c# - 检查一个 byte[] 是否包含在另一个 byte[] 中的最佳方法

c# - 如何使用 HTML 敏捷包选择元素包括选择器元素?

c# - 如何将 ANSEL 文本转换为 UTF-8