5
MyクラスにはTaskCompletionSource<int>
を使用してTask<int>
オブジェクトを生成するメソッドがあります。次に、いくつかの非同期操作を実行し、結果を設定します。私は、タスクのContinueWith
方法かどうかを信頼できるかどうかを知っておく必要があります。タスクの継続をキャンセルするにはどうすればいいですか?
public Task<int> CalculateAsync()
{
var source = new TaskCompletionSource();
DoSomeAsyncStuffAndSetResultOf(source);
source.Task.ContinueWith(t => Console.WriteLine("Is this reliable?"));
return source.Task;
}
がCalculateAsync
メソッドの呼び出し側が作成したタスクに何かをして実行しているから、その継続を阻止することはできますか?
ああ、私は見ています。いいえ、継続は常に実行されます(呼び出し元はタスクを永遠に実行し、完了することはないと仮定して)。 –
あなたの編集を見た後でコメントを削除しました。タスクの結果を設定する前にDisposeを呼び出すとどうなりますか? –
@ŞafakGür:Task.Disposeのドキュメントに従って、InvalidOperationExceptionがスローされます。 –