Недавно я обновил приложение от VS2003 до VS2008, и я знал, что буду иметь дело с множеством операций Cross-thread недействительными: Control 'myControl' обратился из потока, отличного от потока, который был создан на "Я обработка этого в том, что я верю, является правильным способом (см. пример кода ниже). Я сталкиваюсь с многочисленными элементами управления, которым потребуется аналогичное исправление. Не желая иметь аналогичный код для каждой метки, текстового поля и т.д., К которым обращается поток неинтерфейса. Каковы последствия просто установки CheckForIllegalCrossThreadCalls = false для всего приложения?
Я нашел статью CodeProject с различными обходными решениями и предупреждение внизу, чтобы НЕ установить свойство. Я ищу другие мнения/опыт по этому вопросу.
private void ShowStatus(string szStatus)
{
try
{
if (this.statusBar1.InvokeRequired) { BeginInvoke(new MethodInvoker(delegate() { ShowStatus(szStatus); })); }
else { statusBar1.Panels[0].Text = szStatus; }
}
catch (Exception ex)
{
LogStatus.WriteErrorLog(ex, "Error", "frmMNI.ShowStatus()");
}
}
Я нашел еще одну статью с некоторыми возможными решениями SO Вопрос 2367718