完整教程:C# 中UI 线程和后端线程使用避坑指南
2025-12-02 10:47 tlnshuju 阅读(7) 评论(0) 收藏 举报C# 中UI 线程和后端线程使用避坑指南
C# 中UI 线程和后端线程是两个极其重要的概念。UI 线程专注用户界面的绘制与交互,后端线程专注处理耗时任务。UI 线程和后端线程使用时,需要避免一些坑,确保程序的稳定性和数据的一致性
一、WPF界面显示内容
点击【更新颜色按钮】按钮,【颜色】按钮颜色在黑色和红色间切换
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="更新颜色按钮" Width="200" Height="60" FontSize="20" Click="Button_Click"/>
<Button x:Name="btn_Show" Content="颜色" Width="200" Height="60" FontSize="20" Margin="0,30"/>
</StackPanel>
private void Button_Click(object sender, RoutedEventArgs e)
{
btn_Show.Background = Brushes.Black == btn_Show.Background ? Brushes.Red : Brushes.Black;
}
二、UI 线程和后端线程使用注意事项
1. UI线程不要执行耗时操作
模拟界面卡顿现象:如点击按钮后,模拟延迟3s
效果:按钮点击后被占用、延迟时间过后颜色才更新
UI线程不要执行耗时操作,否则界面会卡顿或无响应
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread.Sleep(3000);
btn_Show.Background = Brushes.Black == btn_Show.Background ? Brushes.Red : Brushes.Black;
}
2. 只能在UI线程进行控件更新
- UI线程是WPF应用的主线程,负责所有界面控件的创建、渲染和用户交互事件处理
- 后端线程不能更新控件内容。如:在点击按钮事件中使用task切换到后端线程更新颜色:控件不响应后端线程的更新
注意:后端线程更新界面元素时,需通过 Dispatcher 的 Invoke 或 BeginInvoke 方法切换到 UI 线程更新<
浙公网安备 33010602011771号