我有返回无效的操作。但我需要调用以在当前范围运行时保持打开状态。
public class CancellationHelper
{
CancellationTokenSource _cts;
public void Run(Action<CancellationToken> action)
{
if (_cts != null)
{
return;
}
using (_cts = new CancellationTokenSource())
{
action(_cts.Token);
}
}
}
如果 action 是async
,_cts
将在方法完成之前被释放。返回类型是无效的,所以我不能只是等待它......我已经读过你应该避免Task.Run
和支持 async/await,但我不知道如何为 using 子句执行此操作。
await Task.Run(action);
脏吗?这是在启动另一个“任务”或线程以等待启动任务或线程的东西吗?