async Task — awaitable. async void — fire-and-forget (avoid!).
async Task:
1public async Task DoWorkAsync() {2 await Task.Delay(1000);3}45// Can await6await DoWorkAsync();78// Can catch exceptions9try {10 await DoWorkAsync();11} catch (Exception ex) {12 Console.WriteLine(ex);13}
async void:
1// Event handler (only valid use)2private async void Button_Click(object sender, RoutedEventArgs e) {3 await DoWorkAsync();4}
Why async void is dangerous: