1. ホーム
  2. c#

[解決済み] 完成したTask<T>を作成する

2022-06-10 16:33:12

質問

あるメソッドを実装しています。 Task<Result> StartSomeTask() を実装していて、たまたまメソッドが呼ばれる前にすでに結果を知っています。どのようにすれば タスク<T> を作成するにはどうしたらよいですか?

現在やっているのはこれです。

private readonly Result theResult = new Result();

public override Task<Result> StartSomeTask()
{
    var task = new Task<Result>(() => theResult);
    task.RunSynchronously(CurrentThreadTaskScheduler.CurrentThread);
    return task;
}

もっと良い解決策はないのでしょうか?

どのように解決するのですか?

private readonly Result theResult = new Result();

public override Task<Result> StartSomeTask()
{
    var taskSource = new TaskCompletionSource<Result>();
    taskSource.SetResult(theResult);
    return taskSource.Task;
}