这是我的代码。C#:方法被连续调用两次
BackgroundWorker exportWorker = new BackgroundWorker();
private void btnOK_Click(object sender, RoutedEventArgs e)
{
exportWorker.DoWork += new DoWorkEventHandler(ExportWorkerDoWork);
exportWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(ExportWorkerRunWorkerCompleted);
exportWorker.RunWorkerAsync();
}
void ExportWorkerDoWork(object sender, DoWorkEventArgs e)
{
MethodToPerformInThisThread();
**Dispatcher.Invoke(new Action(() => {MethodofAnotherThreadThatChangesUIStuff();}**
}
void ExportWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
- 当我点击确定按钮(
btnOK_Click
)第一次,它会提前 并运行一切就好了。现在 - ,如果我确定按钮点击第二次代码有 执行完毕,在大胆的运行代码的两倍,这意味着 方法
MethodofAnotherThreadThatChangesUIStuff();
被称为连续两次 后。 - 再次,如果我第三次单击确定按钮,
MethodofAnotherThreadThatChangesUIStuff();
被连续调用三次 。 - 等等。
我想MethodofAnotherThreadThatChangesUIStuff();
被调用一次,不管它是哪一次点击。我的意思是,通常情况就是这样。
我在这里错过了什么?
任何帮助将非常感激。
也许禁用点击方法中的按钮。 – RyPope 2013-03-27 18:56:27
我看到EventHandlers的一些粗心的处理 – 2013-03-27 18:59:17