Bu "C # içinde bir async yöntemini güvenli bir şekilde beklemeksizin nasıl çağırılır" kopyası değildir .
Aşağıdaki uyarıyı nasıl güzel bir şekilde engelleyebilirim?
CS4014 uyarısı: Bu çağrı beklenmediğinden, çağrı tamamlanmadan önce geçerli yöntemin yürütülmesi devam eder. Aramanın sonucuna 'bekliyor' operatörünü uygulamayı düşünün.
Basit bir örnek:
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);
}
Ne denedim ve beğenmedim:
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
// ...
}
Güncellenmiş , orijinal kabul edilen cevap düzenlendiğinden, burada uygun olduğunu düşünmediğim için kabul edilen cevabı C # 7.0 kartlarını kullanarak değiştirdim ContinueWith. Ateşle ve unut işlemleri için istisnaları günlüğe kaydetmem gerektiğinde, burada Stephen Cleary tarafından önerilen daha ayrıntılı bir yaklaşım kullanıyorum .
async voidyardımcı yöntemiyle.
#pragmahoş değil mi?