c# - 如何在 C# backgroundworker progressed changed 事件中发送更多参数

标签 c# events backgroundworker

我明白我们如何将一个变量(progresspercentage)传递给“progresschanged”函数,就像这样。

backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);

...

worker.ReportProgress(pc);

...

private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
   this.progressBar1.Value = e.ProgressPercentage;
}

但是我想给这个函数传递更多的变量,比如:

worker.ReportProgress(pc,username,score);

...

private void backgroundWorker1_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
   this.progressBar1.Value = e.ProgressPercentage;
   this.currentUser.Value = e.UserName;  //as string
   this.score.Value = e.UserScore;  //as int
}

抱歉,我是 c# 的新手,谁能给我一个例子。

最佳答案

重载后台工作组件的 ReportProgress 方法以传递百分比和对象类型的状态值:

public void ReportProgress(int percentProgress, Object userState)

在您的使用需求中,您可以使用字符分隔符连接 UserName 和 Score,从而将多个值传递给 userState 参数;并在引发 ProgressChanged() 事件时将它们拆分。您还可以创建一个基于属性的小类 - 用值填充它并使用 userState 对象类型参数传递。

有关如何使用重载 ReportProgress 方法的示例,请查看以下 MSDN 链接:

http://msdn.microsoft.com/en-us/library/a3zbdb1t.aspx

关于c# - 如何在 C# backgroundworker progressed changed 事件中发送更多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7332632/

相关文章:

architecture - 消息队列架构(客户端到 Web 服务器到工作人员并返回)

c# - Visual Studio 2010 $(PlatformName) 宏与 MSBuild.exe 不兼容

c# - 如何在 ASP.NET Core MVC 应用程序 Web API Controller 中防止 CSRF/XSRF

c# - 将事件写入事件日志期间出现 WCF 异常

javascript - 拦截按键(如空格和箭头)时停止页面滚动

ruby-on-rails - delayed_job、守护进程或其他用于重复后台作业的 gem

c# - 从用于外部登录身份验证的 Twitter API 获取用户的电子邮件 ASP.NET MVC C#

c# - 如何解决 Autofac 循环依赖?

c# - 用我自己的抽象 Web 服务事件

c# - 绑定(bind)后台时"Must create DependencySource on same Thread as the DependencyObject."