如何在c#中使用BackgroundWorker时将数据从业务逻辑类发送到UI

本文关键字:业务 UI 数据 BackgroundWorker | 更新日期: 2023-09-27 18:16:16

在我的c#项目中有两个类。一个用于UI,另一个用于业务逻辑(BL)。我在UI项目中使用BackgroundWorker来调用BL中的方法,该方法将处理耗时的任务(数据库备份)。但是,我无法将百分比完成从BL发送到UI。实现这一目标的最佳方式是什么?

注:UI引用BL项目

如何在c#中使用BackgroundWorker时将数据从业务逻辑类发送到UI

尝试Dispatcher。调用以写入UI类似的Dispatcher.Invoke(() => Status。

在winforms中,您通常在控件/表单中使用类似于以下的模式:

public void UpdatePercentage(double percentage) {
    if (InvokeRequired) {
        Invoke(new Action<double>(UpdatePercentage), percentage);
        // You could also use BeginInvoke if you don't care about the return value
        return;
    }
    // we are now on the ui thread and can update what we want
    myLabel.Text = Math.Round((percentage * 100), 2).ToString();
}

引用:

  • Control.InvokeRequired
  • Control.BeginInvoke
  • Control.Invoke