Saya tahu umumnya dianggap ide yang buruk untuk menggunakan async void
metode api-dan-lupakan untuk memulai tugas, karena tidak ada jejak tugas yang tertunda dan sulit untuk menangani pengecualian yang mungkin dilemparkan ke dalam metode seperti itu.
Haruskah saya juga menghindari async void
penanganan acara secara umum ? Sebagai contoh,
private async void Form_Load(object sender, System.EventArgs e)
{
await Task.Delay(2000); // do async work
// ...
}
Saya bisa menulis ulang seperti ini:
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
// ...
}
Apa saja batuan bawah air untuk penangan acara asinkron, selain kemungkinan masuk kembali?