Добрый день. У меня есть форма и один фоновый рабочий. В событии bw_Dowork есть случаи, когда мне нужно напечатать сообщение, используя MessageBox.Show() (т.е. поле YES?NO). Однако всякий раз, когда я вызываю метод messageBox.Show(), выполнение зависает, и форма не позволяет мне щелкнуть мой выбор (т.е. Да/Нет). Иногда, если я хочу работать, мне нужно быстро нажимать, как показывает сообщение. В противном случае он зависает, когда я даю секундный перерыв. Пример экземпляра, в котором я использую MessageBox.Show(), показан ниже:
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
if (fileFTP.Exists == false)
{
_busy.WaitOne();
if ((worker.CancellationPending == true))
{
e.Cancel = true;
return;
}
SetText("File Ftp.exe are missing. This file are required to preform update, please contact yout system administrator to retrive Ftp.exe", true);
MessageBox.Show("File Ftp.exe are missing. This file are required to preform update, please contact yout system administrator to retrive Ftp.exe");
goto ExitProgram;
}
}
После того, как я провел некоторое исследование этого в Интернете, некоторые предположили, что MessageBox мешает потоку интерфейса. Это заставляет меня запускать сообщения с использованием делегатов, но все безрезультатно. Мне пришлось удалить все MessageBoxes. Если оставить один, моя казнь при выстреле все еще останавливается. Пожалуйста, любая помощь будет оценена по достоинству.
goto
! :D 08.11.2013