Ini bukan duplikat dari "Cara memanggil metode async dengan aman di C # tanpa menunggu" .
Bagaimana cara saya dengan baik menekan peringatan berikut?
peringatan CS4014: Karena panggilan ini tidak ditunggu, pelaksanaan metode saat ini berlanjut sebelum panggilan selesai. Pertimbangkan untuk menerapkan operator 'menunggu' ke hasil panggilan.
Contoh sederhana:
static async Task WorkAsync()
{
await Task.Delay(1000);
Console.WriteLine("Done!");
}
static async Task StartWorkAsync()
{
WorkAsync(); // I want fire-and-forget
// more unrelated async/await stuff here, e.g.:
// ...
await Task.Delay(2000);
}
Apa yang saya coba dan tidak suka:
static async Task StartWorkAsync()
{
#pragma warning disable 4014
WorkAsync(); // I want fire-and-forget here
#pragma warning restore 4014
// ...
}
static async Task StartWorkAsync()
{
var ignoreMe = WorkAsync(); // I want fire-and-forget here
// ...
}
Diperbarui , karena jawaban yang diterima asli telah diedit, saya telah mengubah jawaban yang diterima menjadi yang menggunakan C # 7.0 discards , karena menurut saya tidak ContinueWith
sesuai di sini. Kapan pun saya perlu mencatat pengecualian untuk operasi kebakaran dan lupakan, saya menggunakan pendekatan yang lebih rumit yang diusulkan oleh Stephen Cleary di sini .
async void
metode pembantu.
#pragma
tidak baik?