Мое приложение читает каждые x мс некоторые данные из последовательного порта (MyDataReader) и отображает их в элементе управления. MyDataReader также может быть файлом, из которого я могу читать данные.
Я использовал простой таймер, каждый тик я считывал данные из последовательного порта / файла, обрабатывал их и отображал, они отлично работали.
Теперь я добавил другое устройство, с которого мне нужно читать данные, и я переключился на System.Threading.Timer, но теперь моя функция «галочка» не работает должным образом, когда она читает из последовательного порта, я получить нули. когда я вхожу в режим отладки и функцию точки останова ReadFromSerialPort (), иногда я получаю действительные данные, иногда нет.
Если я переключаю чтение с последовательного порта на чтение из файла, оно работает нормально, я вызываю все элементы управления, отображающие данные.
Я заблокировал чтение / запись из последовательного порта:
lock(this)
{
writetoserialport;
readfromserialport;
}
У кого-нибудь есть идеи, почему я получаю нули все время, а когда я брепаюсь, у меня иногда есть данные?
Это как будто он открывает чтение из последовательного порта в другом потоке, и мне нужно ждать, пока данные будут прочитаны.
Спасибо.