Это мой код.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
) в первый раз, он идет вперед и работает все просто отлично. - Теперь, если я нажимаю на кнопки OK во второй раз после того, как код имеет окончания выполнения, код в смелых пробегов в два раза, то есть метод
MethodofAnotherThreadThatChangesUIStuff();
вызывается, дважды подряд. - Опять же, если я нажму кнопку «ОК» в третий раз, то
MethodofAnotherThreadThatChangesUIStuff();
вызывается три раза в строке. - и так далее.
Я хочу, чтобы MethodofAnotherThreadThatChangesUIStuff();
был вызван один раз, независимо от того, какой именно щелчок. Я имею в виду, что так все должно работать.
Что мне здесь не хватает?
Любая помощь будет действительно оценена.
Возможно, отключите кнопку в методе click. – RyPope
Я вижу некоторое неосторожное обращение с EventHandlers –