У меня есть приложение winforms, проблема связана с многопоточностью.
Так как я вызываю MyCustomCode (), который создает новый поток и вызывает метод
SomeMethod (), который затем обращается к MessageBox.Show (...).
Проблема связана с потоками, так как недавно созданный поток пытается получить доступ
элемент управления, созданный в другом потоке.
Я получаю ошибку:
Операция с несколькими потоками недопустима: элемент управления «TestForm» доступен из потока, отличного от потока, в котором он был создан.
public TestForm()
{
InitializeComponent();
// custom code
//
MyCustomCode();
}
public void SomeMethod()
{
// ***** This causes an error ****
MessageBox.Show(this,
ex.Message,
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error
);
}
private void InitializeAutoUpdater()
{
// Seperate thread is spun to keep polling for updates
ThreadStart ts = new ThreadStart(SomeMethod);
pollThread = new Thread(ts);
pollThread.Start();
}
Обновление
Если вы посмотрите на этот пример http://www.codeproject.com/KB/cs/vanillaupdaterblock.aspx,, метод CheckAndUpdate вызывает MessageBox.Show (..), в этом моя проблема. Я бы подумал, что этот код хорош, чтобы пойти!
Забавно в том, что этот код работал очень хорошо в пятницу ???