关于布尔函数的BackgroundWorker c#

时间:2013-04-22 13:09:47

标签: c# background boolean backgroundworker

我有一个布尔函数。我有一个bw,我希望用它来运行这个功能。 我想从函数中获取返回值,是否可能?

以下是示例代码:

void Main ()
{
     BackgroundWorker backgroundWorker = new BackgroundWorker();
     backgroundWorker.DoWork += (sender1, e1) => testBool();
     bool result = backgroundWorker.RunWorkerAsync;
}

bool testBool()
{
     return true;
}

有可能吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以订阅BackgroundWorker.RunWorkerCompleted事件,以接收有关计算终止的事实的通知。

testBool(..)内,您可以设置全局变量,并在内部之后 RunWorkerCompleted的事件处理程序读取该值。

答案 1 :(得分:1)

您可以像这样使用 e.Result : 第一步:您需要添加事件 RunWorkerCompleted

    _bw.RunWorkerCompleted += BwRunWorkerCompleted;

创建函数 BwRunWorkerCompleted ,这将在线程完成后触发。例如:

private void BwRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            // First, handle the case where an exception was thrown.
            if (e.Error != null)
            {
                MessageBox.Show(e.Error.Message);
            }

           // 
            if (e.Result != null)
            {
                // test if result is true or false <== HERE YOU GO!
                if ((Boolean)e.Result == true)
                {
                    this.Hide();
                    Form fm = new SFGrilla(ref lr, ref binding);
                    fm.ShowDialog();
                    this.Close();
                }
            }
            else
            {
                // hide the progress bar when the long running process finishes
                progressBar.Visible = false;

                // enable button
                btnLogin.Enabled = true;
            }

        }

你的testbool()应该有正确的参数:

private void testbool(object sender, DoWorkEventArgs doWorkEventArgs) {
      success = true;
      doWorkEventArgs.Result = success;
}

希望它有所帮助。