如何使用BackgroundWorker发送多个UserState.报告进度WPF

本文关键字:报告 UserState WPF 何使用 BackgroundWorker | 更新日期: 2023-09-27 18:02:38

如何使用BackgroundWorker发送。是否报告多个用户状态的进度?

例如:

progressbar.Value = e.UserState as double; 

这个将用于ProgressBar

lblpercent.Content = e.UserState as string;

这个将用于标签

感谢

如何使用BackgroundWorker发送多个UserState.报告进度WPF

您可以将进度传递给percentProgress参数

worker.ReportProgress(55,"test");
progressbar.Value = e.PercentProgress / 100.0 * progressbar.MaxValue;
lblpercent.Content = e.UserState.ToString();

或者通过userState 传递类/结构

class MyUserState
{
    public double Value {get;set;}
    public string Content {get;set;}
}
worker.ReportProgress(55,new MyUserState { Value = 23.7, Content = "Working ..."});
MyUserState state = e.UserState as MyUserState;
progressbar.Value = state.Value;
lblpercent.Content = state.Content;

我喜欢backgroundWorker1_DoWork:

string [] workerResult = new string[3];
workerResult[0] = total.ToString();
orkerResult[1] = "Files Copied: " + i + "/" + filecount;
workerResult[2] = "Size Copied: " + totalmb + "/" + totalsize + " MB";

并将放入backgroundWorker1_ProgressChanged

string[] results = (string[])e.UserState;
progressbar.Value = double.Parse(results[0]);
lblcopiedfiles.Content = results[1];
lblsizecopied.Content = results[2];

感谢您的帮助