void を返すアクションがあります。しかし、実行中に現在のスコープを開いたままにするための呼び出しが必要です。
public class CancellationHelper
{
CancellationTokenSource _cts;
public void Run(Action<CancellationToken> action)
{
if (_cts != null)
{
return;
}
using (_cts = new CancellationTokenSource())
{
action(_cts.Token);
}
}
}
アクションが の場合、async
は_cts
メソッドが完了する前に破棄されます。戻り値の型が無効なので、ただ待つことはできません... Task.Run
async/await を避けて優先することになっていると読みましたが、句を使用するためにこれを行う方法がわかりません。
await Task.Run(action);
汚れていますか?これは別の「タスク」またはスレッドをスピンアップして、タスクまたはスレッドをスピンアップする何かを待機していますか?