await только подписывается на результат awaitable (в нашем случае Task). И то будет ли выполнятся этот не зависит от await т.е. от тех кто его может ждать. т.е. ответ - Да, Notify() будет себе часами молотить. Если внутри будет ошибка, то лучше подписаться на результат и скипнуть ошибку. Notify().ContinueWith(t=> { var x = t.Exception; ... });
Task.Run(async () =>
Так делать не стоит, это ошибка, которую часто совершают. 'async => ()' это уже стейт-машина которая запускается вызовом, ее не надо шедулить через таски.
Правильный пример:
new Func<Task>(async => {
try
{
await _notification.Notify();
} catch(Exception ex) {
// TODO: Логируем исключение
}
}).Invoke();
Но опять же это всё не нужно в текущей задаче, можно вызвать ContinueWith.