Страница: 1 |
Страница: 1 |
Вопрос: проблема с com портом
Добавлено: 24.12.05 21:30
Автор вопроса: ping
Привет всем!
Заюзал VS2005, дабы поработать с com портом... (там есть готовый компонент)
Так вот все работает, одна напасть — есть событие, которое слушает данный порт.
Почему то не могу получить данные из этого события
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
label.Text = SerialPort1.ReadExisting()
End Sub
Вылазет ексепшин "Illegal cross-thread operation: Control 'txtRead' accessed from thread other than the thread it was created on"
Как это победить?
Eсть решение для C# c ипользованием делегата
private void serialPort1_ReceivedEvent(object sender, SerialReceivedEventArgs e)
{
MethodInvoker d = delegate() { txtRead.Text = serialPort1.ReadLine(); }
txtRead.Invoke(d);
}
Помогите переделать на VB
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 25.12.05 10:04
Private Sub ReadSeriaPortDelegateHandler ()
txtRead.Text = serialPort1.ReadLine()
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim d As New ReadSerialPort (AddressOf ReadSerialPortDelegateHandler)
txtRead.Invoke(d)
End Sub