private void SendButton_Click(object sender, EventArgs e)如何改为private async Task SendButton_Click(object sender, EventArgs e)
时间: 2024-10-23 12:14:37 浏览: 27
托盘,右键演示,C#源代码private void Form1_Load(object sender, EventArgs e)
5星 · 资源好评率100%
将`SendButton_Click`从同步方法转换为异步方法,以便在发送网络请求时避免阻塞UI线程,可以这样做:
原始同步方法[^1]:
```csharp
private void SendButton_Click(object sender, EventArgs e)
{
// 发送消息到服务器
_hubConnection.SendAsync("SendMessage", UsernameTextBox.Text, MessageTextBox.Text);
}
// ...
```
改写为异步方法[^2]:
```csharp
private async Task SendButton_ClickAsync(object sender, EventArgs e)
{
// 使用await关键字等待任务完成
await _hubConnection.SendAsync("SendMessage", UsernameTextBox.Text, MessageTextBox.Text);
// 如果有额外的网络操作,如发送二进制数据,也可以这样写:
// byte[] data = Encoding.ASCII.GetBytes(MessageTextBox.Text);
// await clientSocket.SendAsync(data, SocketFlags.None);
}
```
注意,现在`SendButton_Click`方法返回一个`Task`,这样UI线程就不会被阻塞,提高了响应性。
阅读全文