這是我的代碼。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