在WinForms中,您可以使用异步方法来执行长时间运行的操作,以免阻塞UI线程。下面是一个示例代码,演示如何在点击btnSend按钮时异步调用ask方法:
private async void btnSend_Click(object sender, EventArgs e) { // 禁用发送按钮 btnSend.Enabled = false; try { // 异步调用ask方法 var result = await Task.Run(() => ask()); // 在UI线程上更新UI textBox1.Text = result; // 重新启用发送按钮 btnSend.Enabled = true; } catch (Exception ex) { // 处理异常 MessageBox.Show(ex.Message); // 重新启用发送按钮 btnSend.Enabled = true; } } private string ask() { // 执行长时间运行的操作,返回结果 return "Hello, World!"; }
在上述代码中,我们将btnSend按钮的Click事件处理程序定义为异步方法,并在其中使用Task.Run方法来异步调用ask方法。在ask方法中执行长时间运行的操作,并返回结果。然后,在UI线程上更新textBox1控件的文本,以显示ask方法的结果。最后,重新启用btnSend按钮,以便用户可以再次点击它。
请注意,我们在try-catch块中捕获任何可能发生的异常,并在发生异常时显示错误消息,并重新启用btnSend按钮。这样可以确保应用程序的稳定性,并提供有关出现问题的详细信息。