избегайте перекрестных ошибок. При взаимодействии с элементами пользовательского интерфейса из потоков без UI (например, потоков, сгенерированных путем получения событий из данных последовательного порта), необходимо решать проблемы безопасности потоков, чтобы избежать ошибок перекрестной трубы.
]в коде C#, ошибка «операция по перекрестной трубе является недействительной: контроль доступа 'TextBox1» из потока, кроме потока, который создал элемент управления «TextBox1», потому что поток пользовательского интерфейса владеет управлением TextBox1 и доступа к Из другой потока будет вызовать конфликты ассоциации потоков.
]Чтобы решить эту проблему, планировщик должен использоваться для разрешения соответствующих потоков (обычно потоков пользовательского интерфейса) для доступа к элементам пользовательского интерфейса. В этом случае методы делегирования и вызовов могут использоваться для обеспечения безопасного доступа:
]делегат void setTextCallback (String Text); private void setText (строка текст) { if (this.textbox1.invokerequired) {{ SetTextCallback d = new SetTextCallback (setText); this.invoke (d, новый объект [] {text}); } еще { this.textbox1.text = text; } }
delegate void SetTextCallback(string text);
private void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
private void serialport1_datareceived (отправитель объекта, system.io.ports.serialdatareceivedeventargs e) { txt = serialport1.readexisting (). ToString (); SetText (txt.toString ()); }
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
txt = serialPort1.ReadExisting().ToString();
SetText(txt.ToString());
}
] Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3