【发布时间】:2011-03-11 04:22:34
【问题描述】:
private void btnTest_Click(object sender, RoutedEventArgs e)
{
try
{
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
if (flag == false)
{
setBtnText(btTest, "ReTest");
flag = true;
}
else
{
setBtnText(btTest, "Test");
flag = false;
}
};
worker.RunWorkerAsync();
}
catch (Exception ex)
{
ErrorLogger(ex, "");
}
}
好的,这很令人沮丧。也许我只是在放屁。基本上,我根据标志的设置方式使单个按钮执行 1/2 动作。当我第一次单击 btTest 时,它可以正常工作并将按钮文本设置为重新测试。现在,如果我再次单击它,它会将其设置为测试,但随后会循环回到开头并将其设置回重新测试。我不明白为什么它会循环回来。它应该做 if 或 else。 Not if (click 1), else to if (click 2), 在新的点击时重复。它应该(在我看来),如果(点击 1),否则(点击 2),重复新的点击。请帮助我理解这一点。也许这就是 DoWork 做事的方式,我不知道。谢谢!
【问题讨论】:
-
您实际上是在每次点击附加一个代表,对吧?所以基本上,在第二次单击时,您会调用委托两次。
标签: c# multithreading backgroundworker