Подавление «предупреждение CS4014: поскольку этот вызов не ожидается, выполнение текущего метода продолжается…»

Это не дубликат «Как безопасно вызвать асинхронный метод в C # без ожидания» .

Как мне приятно подавить следующее предупреждение?

Предупреждение CS4014: Поскольку этот вызов не ожидается, выполнение текущего метода продолжается до завершения вызова. Попробуйте применить оператор 'await' к результату вызова.

Простой пример:

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 здесь уместно. Всякий раз, когда мне нужно регистрировать исключения для операций «забей и забудь», я использую более сложный подход , предложенный Стивеном Клири здесь .

143
задан noseratio 7 December 2018 в 00:23
поделиться