2017-01-08 2 views
-1

Я использую Visual Studio 2017 и у меня есть RichTextBox, который не отображает текст, когда я установил его:Visual Studio RichText окно не отображается текст

public void ArduinoDataRecived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    SerialPort TempSerial = (SerialPort)sender; 
    ConsoleTextBox.AppendText(TempSerial.ReadLine()); 
} 

код работает без ошибок и всякий раз, когда я называю MessageBox.Show(ConsoleTextBox.text) отображает текст, отправленный последовательным портом, но текстовое поле не отображает его.

Если у меня есть совершенно другой метод, который устанавливает текст, то он работает?

+0

Показать код PLS !!! –

ответ

0

Возможно, проблема с резьбой. Вот копипаст из the documentation:

Событие DataReceived поднимается на вторичном потоке, когда данные , полученные от объекта SerialPort. Поскольку это событие возникает на вторичном потоке , а не на основном потоке, попытка изменить некоторые элементы в основном потоке, такие как элементы пользовательского интерфейса, может вызвать исключение потоковой обработки . Если необходимо изменить элементы в основной форме Form или Control, отправьте запрос об изменении после использования с помощью Invoke, который сделает работу над соответствующей нитью.

P.S. Перед использованием System.IO.Ports.SerialPort обязательно введите to read this. And this. К сожалению, проблемы все еще не исправлены в .NET 4.5.2. Недавно я портировал свой серийный код с C# на C++, чтобы сделать мое программное обеспечение надежным для всех пользователей. Но если он работает на вашей машине, и вы не работаете над коммерческим программным обеспечением, System.IO.Ports.SerialPort все равно может быть в порядке.