高响应多线程WPF应用程序

本文关键字:多线程 WPF 应用程序 响应 高响应 | 更新日期: 2023-09-27 18:08:16

我正在开发WPF应用程序,通过串口与16台设备通信。通信过程包括读命令和写命令。配置设备大约需要2分钟。我的UI应该在配置过程中响应,它应该在读命令执行后显示读取,在写命令执行后显示命令状态。我使用backgroundworker来处理一个设备。一切正常。现在我需要同时运行所有16个设备。我该怎么做?因为只有一个UI线程可用,UI挂起2-3个设备。

高响应多线程WPF应用程序

你必须为每个设备设置后台Worker,您可以通过以下方式报告每个设备的进度:

backgroundWorker1.DoWork += backgroundWorker1_DoWork;
backgroundWorker1.ProgressChanged +=backgroundWorker1_ProgressChanged;
   private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
     {
       ....
       backgroundWorker1.ReportProgress(i);
       ....
     }
  private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
       progressBar1.Value = e.ProgressPercentage;
    }

你也可以通过使用

从任何线程与UI线程交互
Application.Current.Dispatcher.BeginInvoke
( DispatcherPriority.Normal,new Action(() => { ... }));