我有一个布尔函数。我有一个bw,我希望用它来运行这个功能。 我想从函数中获取返回值,是否可能?
以下是示例代码:
void Main ()
{
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += (sender1, e1) => testBool();
bool result = backgroundWorker.RunWorkerAsync;
}
bool testBool()
{
return true;
}
有可能吗?
感谢。
答案 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;
}
希望它有所帮助。