BackgroundWorker返回值? [英] BackgroundWorker Return A Value?

查看:204
本文介绍了BackgroundWorker返回值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码将1到100之间的数字相加并返回总和.我想做的是在后台工作程序中运行计算并返回一个值.问题是在DoWork完成之前返回returnValue.在返回值之前,我如何等待后台工作人员完成? (我似乎无法将退货放入我的DoWork中...)

The following code adds the numbers from 1 to 100 and returns the sum. What I'm trying to do is run the calculations in a backgroundworker and return a value. The problem with this is that returnValue is returned before DoWork completes. How can I have it wait for my background worker to complete before returning a value? (I can't seem to put the return in my 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;

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

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

Also, this is just example code, my actual code takes more than a minute to complete.

推荐答案

订阅

Subscribe to the RunWorkerCompleted event. That event contains the return value of the background operation.

当然,该值将从DoWorkEventHandler内部返回,就像这样:

Of course, that value would be returned from inside the DoWorkEventHandler, like so:

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

这篇关于BackgroundWorker返回值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆