В приложении Windows Form при загрузке основной формы я установил последовательный порт и начал читать его.Цель состоит в том, чтобы, когда я получаю некоторые данные на последовательном порту, я хочу открыть другую форму, связанную с данными.
Поэтому я использую обработчик событий DataReceived для последовательного порта.
void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string str = this.serialPort1.ReadLine();
if (!string.IsNullOrEmpty(str))
{
Main.Instance.customerData = new CustomerData(str);
Main.Instance.customerData.MdiParent = Main.Instance; //Exeption received at this point
Main.Instance.customerData.Disposed += new EventHandler(customerData_Disposed);
Main.Instance.customerData.Show();
}
}
Но когда я пытаюсь открыть форму в обработчике событий, она выдает мне InvalidOperationExeption: «Операция с несколькими потоками недопустима: доступ к элементу управления Main осуществляется из потока, отличного от потока, которым он былсоздан на. "
Я попытался удалить строку кода: Main.Instance.customerData.MdiParent = Main.Instance;
тогда он работает нормально.Но необходимо также назначить mdiparent, чтобы открыть его как дочернюю форму.
Есть предложения по решению этой проблемы?