220

Task完成した(ではない)を作成したいTask<T>。これを行うために.NETに組み込まれているものはありますか?

関連する質問: 完了した Task<T> を作成する

4

8 に答える 8

169

Task<T>は暗黙的にに変換可能Taskであるため、完了したTask<T>(T任意の値を持つ) を取得し、それを使用します。このようなものを使用して、実際の結果がどこかにあるという事実を隠すことができます。

private static Task completedTask = Task.FromResult(false);
public static Task CompletedTask()
{
    return completedTask;
}

結果を公開しておらず、タスクは常に完了しているため、単一のタスクをキャッシュして再利用できることに注意してください。

.NET 4.0 を使用していて、持っていない場合はFromResult、次を使用して独自に作成できますTaskCompletionSource

public static Task<T> FromResult<T>(T value)
{
    var tcs = new TaskCompletionSource<T>();
    tcs.SetResult(value);
    return tcs.Task;
}
于 2013-01-09T18:44:07.393 に答える
34

Task.FromResult (.NET 4.5) を使用して、完了した を返すことができますTask<T>

非ジェネリックの が必要な場合は、 のサブクラスであるため、TaskいつでもTask.FromResult(0)または 同様のものを使用できます。Task<T>Task

于 2013-01-09T18:42:06.933 に答える
8

You can use Nito.AsyncEx.TaskConstants.Completed from a great library AsyncEx from Stephen Cleary.

于 2014-10-29T16:05:24.567 に答える
0

どうですか:

#pragma warning disable 1998
    public async Task emptyTask() {
    }
#pragma warning restore 1998

気にしない場合は、警告の抑制を省略できます。

于 2015-04-29T15:32:36.760 に答える