Це не дублікат "Як безпечно викликати метод асинхронізації в C # без очікування" .
Як мені красиво придушити наступне попередження?
попередження CS4014: Оскільки цього дзвінка не чекають, виконання поточного методу продовжується до завершення виклику. Подумайте про застосування оператора "в очікуванні" до результату дзвінка.
Простий приклад:
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);
}
Що я спробував і що не сподобалось:
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
// ...
}
Оновлено , оскільки оригінальну прийняту відповідь було відредаговано, я змінив прийняту відповідь на відповідну, використовуючи відкидання C # 7.0 , оскільки не думаю ContinueWith
, що тут доречно. Кожного разу, коли мені потрібно реєструвати винятки для операцій із забудовою, то тут я використовую більш детальний підхід, запропонований Стівеном Клірі .
async void
допоміжного методу.
#pragma
це не приємно?