Memahami Konteks:
Kaedah Async dalam C# boleh kembali sama ada Tugas atau batal. Walaupun kaedah async void boleh kelihatan mudah dalam senario tertentu, kaedah ini memperkenalkan potensi kelemahan yang menyebabkan mereka tidak digalakkan. Mari kita periksa mengapa async void dianggap sebagai amalan buruk dan cara mendekati situasi ini dengan lebih berkesan.
Sebab untuk Mengelak async void:
Alternatif Pendekatan:
Dalam contoh yang disediakan, di mana tumpuan terletak pada bertindak balas kepada klik butang tanpa menunggu hasilnya, pendekatan yang lebih sesuai adalah untuk mentakrifkan kaedah PrimeCustomTask sebagai Tugas async dan menggunakan kaedah OnLoad sebagai titik masuk untuk memulakan operasi tak segerak. Dengan cara ini, semua faedah kaedah Async Task dipelihara:
protected override async void OnLoad(EventArgs e) { if (CustomTask == null) await PrimeCustomTask(); } private async Task PrimeCustomTask() { CustomTask = new TaskCompletionSource<int>(); while (CustomTask.Task.IsCompleted == false && IsDisposed == false) { // Wait for button click to set the value await Task.Delay(100); } int result = CustomTask.Task.Result; // Show the value if (result != 0) MessageBox.Show(result.ToString()); }
Dengan mematuhi garis panduan ini, anda boleh mengelakkan perangkap kaedah async void dan meningkatkan kebolehselenggaraan, kebolehgunaan semula dan kebolehujian kod anda.
Atas ialah kandungan terperinci Bila dan Mengapa Adakah `async void` merupakan Amalan Buruk dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!