Я пытаюсь скрыть форму, созданную в основном потоке, из вторичного потока, но я, очевидно, получаю проблему с перекрестными потоками при вызове метода hide. Я новичок в этом и на самом деле не знаю, как это исправить. Я всегда создавал делегата для вызова моего метода, если он меняет материал, созданный в основном потоке, но я не знаю, как это сделать для встроенного метода hide. Дайте мне знать, если вам нужна дополнительная информация.Перекрестный метод скрыть метод
код:
public partial class MainForm : Form
{
ControlPanelForm m_controlPanel = new ControlPanelForm();
// ....
void MeterThread()
{
while (true)
{
// ....
if (EMOdetected)
{
m_controlPanel.Deinitialize();
m_controlPanel.Hide(); // **** //
}
}
}
}
В принципе, мой MainForm подтягивает форму панели управления, что делает некоторую работу. В фоновом режиме у меня есть поток и проверка на предмет, один из которых - аварийное выключение, после чего я хочу закрыть панель управления и скрыть ее.
Если я пытаюсь вызвать его прямо там,
m_controlPanel.Invoke(new EMOHandler(m_controlPanel.Hide)); // **** //
это не выглядит, как он выполняет что-нибудь, когда я его отладки. Похоже, что он просто передает команду. Опять же, я новичок в этом, поэтому любые объяснения приветствуются.
Вы правы насчет InvokeRequired. –