私はメソッドTask<Result> StartSomeTask()
を実装していて、メソッドが呼び出される前にたまたま結果を知っています。すでに完了したTask <T>を作成するにはどうすればよいですか?
これは私が現在やっていることです:
private readonly Result theResult = new Result();
public override Task<Result> StartSomeTask()
{
var task = new Task<Result>(() => theResult);
task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);
return task;
}
より良い解決策はありますか?
6
Task <T>はTaskから継承するため、この質問への回答はプレーンタスク(<T>なし)を作成する場合にも問題なく機能します。
—
Tim Lovell-Smith、
今日
—
nawfal 2018年
ValueTask
、完了したタスク(つまり、コードが基本的に同期になるように既に持っている値)があるため、割り当てを節約できることに注意してください。