Коммуникация Com-порта в C# Ошибка обмена сообщениями между потоками
Всем привет,
Я написал программу, которая считывает данные с com-порта и выполняет дальнейшую обработку. Программа работает хорошо, но иногда она выбрасывает исключение "crossthreadmessaging", когда я присваиваю значение текстовому полю. Мне нужно ваше ценное руководство, чтобы разобраться в этой проблеме.
ниже приведен код, который я использую в своем приложении.
void lobjCOM1_DataReceived(object sender, SerialDataReceivedEventArgs e) { string lsCOM1Val = lobjCOM1.ReadExisting(); if (lsCOM1Val.Length > 8) { if (lsCOM1Val.Substring(lsCOM1Val.Length - 8, 1) == "H") { if (this.txtC2.InvokeRequired) { this.txtC2.BeginInvoke((MethodInvoker)delegate() { try { this.txtC2.Text = (Int64.Parse(lsCOM1Val.Substring(lsCOM1Val.Length - 6, 5)) / 1000).ToString() + "." + String.Format("{0:000}", (Int64.Parse(lsCOM1Val.Substring(lsCOM1Val.Length - 6, 5)) % 1000)); } catch (FormatException ex) { this.txtC2.Text = "99.999"; } }); } } } }
заранее спасибо...
Что я уже пробовал:
Я попробовал приведенный выше код, который работает нормально, но иногда он выдает ошибку, которой не должно быть. Я не могу догадаться о возможной причине