理解上下文:
C# 中的非同步方法可以傳回任務或無效。雖然 async void 方法在某些情況下看起來很方便,但它們引入了潛在的缺點,通常不鼓勵使用它們。讓我們來看看為什麼 async void 被認為是不好的做法,以及如何更有效地處理這些情況。
避免async void 的原因:
替代方案方法:
在提供的範例中,重點在於對按鈕點擊做出反應而不等待結果,更合適的方法是將PrimeCustomTask 方法定義為非同步任務,並利用OnLoad 方法作為啟動非同步操作的入口點。這樣,就保留了async Task 方法的所有優點:
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()); }
透過遵守這些準則,您可以避免async void 方法的陷阱,並提高程式碼的可維護性、可重用性和可測試性。
以上是何時以及為什麼「async void」在 C# 中是一種不好的做法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!