C# 布尔函数c上的BackgroundWorker#
我有一个布尔函数。我有一个bw,我想用它来运行这个函数。 我想从函数中获取返回值,可以吗 下面是一个示例代码:C# 布尔函数c上的BackgroundWorker#,c#,background,boolean,backgroundworker,C#,Background,Boolean,Backgroundworker,我有一个布尔函数。我有一个bw,我想用它来运行这个函数。 我想从函数中获取返回值,可以吗 下面是一个示例代码: void Main () { BackgroundWorker backgroundWorker = new BackgroundWorker(); backgroundWorker.DoWork += (sender1, e1) => testBool(); bool result = backgroundWorker.RunWorkerAsync
void Main ()
{
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += (sender1, e1) => testBool();
bool result = backgroundWorker.RunWorkerAsync;
}
bool testBool()
{
return true;
}
可能吗
谢谢。您可以订阅事件以接收有关计算机已终止的事实的通知
在该testBool(…)
中,您可以设置全局变量,然后在内部
RunWorkerCompleted的事件处理程序读取该值。您可以像这样使用e.Result:
第一步:您需要添加事件RunWorkerCompleted
_bw.RunWorkerCompleted += BwRunWorkerCompleted;
并创建函数brunworkercompleted,该函数将在线程完成后激发。例如:
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;
}
}
希望有帮助。不,这是不可能的。使用BackgroundWorker的目的是在另一个线程上运行代码。这需要时间来计算结果。等待该结果完全违背了使用辅助程序的目的,并且很可能导致死锁,您最好直接调用testBool()。
private void testbool(object sender, DoWorkEventArgs doWorkEventArgs) {
success = true;
doWorkEventArgs.Result = success;
}