Task<T>
secara implisit dapat dikonversi Task
, jadi dapatkan yang lengkap Task<T>
(dengan T
nilai apa saja dan apa saja) dan gunakan itu. Anda dapat menggunakan sesuatu seperti ini untuk menyembunyikan fakta bahwa hasil aktual ada di sana, di suatu tempat.
private static Task completedTask = Task.FromResult(false);
public static Task CompletedTask()
{
return completedTask;
}
Perhatikan bahwa karena kami tidak mengekspos hasilnya, dan tugas selalu selesai, kami dapat men-cache satu tugas dan menggunakannya kembali.
Jika Anda menggunakan .NET 4.0 dan tidak memilikinya, FromResult
Anda dapat membuatnya sendiri menggunakan TaskCompletionSource
:
public static Task<T> FromResult<T>(T value)
{
var tcs = new TaskCompletionSource<T>();
tcs.SetResult(value);
return tcs.Task;
}
It seems like the answer I'm getting from everyone is that using a garbage value like this is the correct way. That there isn't a way to do this without the garbage value is disappointing -- oh well.
Menurut Anda masalah apa yang terjadi? Jika Anda men-cache satuTask
maka seluruh program Anda memakan satu bit ekstra memori. Bukan apa - apa . Juga, seseorang dapat membuat tugas yang selesai tanpa melakukan itu, itu tidak akan lebih baik.