async void
Görevlere başlamak için ateşle ve unut yöntemlerini kullanmanın genellikle kötü bir fikir olduğunu biliyorum , çünkü bekleyen görevin izi yok ve böyle bir yöntemin içine atılabilecek istisnaları ele almak zor.
Genelde async void
olay işleyicilerinden de kaçınmalı mıyım ? Örneğin,
private async void Form_Load(object sender, System.EventArgs e)
{
await Task.Delay(2000); // do async work
// ...
}
Bunu şu şekilde yeniden yazabilirim:
Task onFormLoadTask = null; // track the task, can implement cancellation
private void Form_Load(object sender, System.EventArgs e)
{
this.onFormLoadTask = OnFormLoadTaskAsync(sender, e);
}
private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e)
{
await Task.Delay(2000); // do async work
// ...
}
Asenkron olay işleyicileri için olası yeniden girişin yanı sıra su altı kayaları nelerdir?