c# - BackgroundWorker 返回一个值?

标签 c# backgroundworker

以下代码将 1 到 100 的数字相加并返回总和。我想要做的是在 backgroundworker 中运行计算并返回一个值。问题在于 returnValue 在 DoWork 完成之前返回。我怎样才能让它在返回值之前等待我的后台工作人员完成? (我似乎无法将返回放在我的 DoWork 中......)

double returnValue = 0;

var b = new BackgroundWorker();
b.DoWork += new DoWorkEventHandler(
    delegate(object sender, DoWorkEventArgs e) {
        for(int i=0;i<100;i++){
            returnValue += (i+1);
        }
    }
);

b.RunWorkerAsync();
return returnValue;

附录:在同一线程上发送消息泵而不是在后台工作程序上运行它会更好吗?

此外,这只是示例代码,我的实际代码需要一分多钟才能完成。

最佳答案

订阅RunWorkerCompleted事件。该事件包含后台操作的返回值。

当然,该值将从 DoWorkEventHandler 内部返回,如下所示:

b.DoWork += new DoWorkEventHandler(
    delegate(object sender, DoWorkEventArgs e) {
        double returnValue = 0;
        for(int i=0;i<100;i++){
            returnValue += (i+1);
        }
        e.Result = returnValue;
    }
);

关于c# - BackgroundWorker 返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224276/

相关文章:

c# - 为什么backgroundworker取消按钮没有取消backgroundworker操作?

WPF:如何使用 BackgroundWorker 处理错误

c# - 如果我没有 UI,是否应该使用 BackgroundWorker 类来处理任务队列?

c# - WPF 命令 - View 与模型的关系

c# - 从 javascript 更改标签文本

c# - 有什么方法可以检测用户控件外的鼠标点击吗?

c# - 尝试插入 schema.table.ID 时出现 ORA-01400

c# - ASP.NET - 启动后台任务而不返回任何结果并阻止用户

c# - 路径中的 XML 非法字符

c# - 如何区分 BackgroundWorker.RunWorkerCompleted 事件处理程序中的不同异常类型