Ik heb een simpel programma geschreven in Visual C# Express (Beta 2) met behulp van de SerialPort component. Ik heb een microcontroller op COM1 aangesloten die wat tekst verzend. Werkt allemaal prima als ik de tekst in een dialog box weergeef. Maar nu wil ik het in een textBox weergeven.
Daarvoor heb ik in de "DataRecieved" event van SerialPort1 dit regeltje code neergezet:
textBox1.Text = textBox1.Text + serialPort1.ReadExisting();
Maar als ik de programma compile en run, geeft hij de exception "System.InvalidOperationException" met het bericht "Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." Ik heb in mijn programma nog helemaal niets met threads gedaan, dus het enige dat ik kan bedenken is dat serialPort zelf een thread maakt.
Mijn vraag dus: Hoe kan ik "textBox1.Text" wijzigen vanuit "serialPort1_DataReceived"?
Daarvoor heb ik in de "DataRecieved" event van SerialPort1 dit regeltje code neergezet:
textBox1.Text = textBox1.Text + serialPort1.ReadExisting();
Maar als ik de programma compile en run, geeft hij de exception "System.InvalidOperationException" met het bericht "Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on." Ik heb in mijn programma nog helemaal niets met threads gedaan, dus het enige dat ik kan bedenken is dat serialPort zelf een thread maakt.
Mijn vraag dus: Hoe kan ik "textBox1.Text" wijzigen vanuit "serialPort1_DataReceived"?
[ Voor 6% gewijzigd door microchip op 29-05-2005 11:30 ]