理解上下文:
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中文网其他相关文章!