ali7566
Lieutenant
- Registriert
- Feb. 2007
- Beiträge
- 980
Hallo,
schreibe zur Zeit eine Software die über RS232 Schnittstelle werte einliest und in eine CSV Datei speichert. Soweit nichts wildes und die Software ist eigentlich auch schon fertig aber es gibt da noch ein Problem.
Da nach dem starten der Software eine While schleife läuft die Byte-weise einliest blockiert mir diese komplett die GUI, da der aktuelle Thread ja nur beim einlesen ist...Logisch.
Daraufhin habe ich einen Thread erzeugt der sich um das einlesen kümmert und die Daten noch in das DataGrid einfügt. Da der Thread jedoch nicht der Erzeuger des DataGrid gewesen ist musste ich folgenden Code nutzen um den Thread das Recht zu geben auf das Steuerelement zuzugreifen:
Danach kam die Exception zwar nicht mehr und die dazugehörigen Methode dataReading welche sich um das Einlesen kümmert Arbeitet dann auch aber die GUI blockiert immer noch.
Was mache ich da falsch?
Um den Thread anzuwerfen mache ich übrigens folgendes:
Gruß Ali.
schreibe zur Zeit eine Software die über RS232 Schnittstelle werte einliest und in eine CSV Datei speichert. Soweit nichts wildes und die Software ist eigentlich auch schon fertig aber es gibt da noch ein Problem.
Da nach dem starten der Software eine While schleife läuft die Byte-weise einliest blockiert mir diese komplett die GUI, da der aktuelle Thread ja nur beim einlesen ist...Logisch.
Daraufhin habe ich einen Thread erzeugt der sich um das einlesen kümmert und die Daten noch in das DataGrid einfügt. Da der Thread jedoch nicht der Erzeuger des DataGrid gewesen ist musste ich folgenden Code nutzen um den Thread das Recht zu geben auf das Steuerelement zuzugreifen:
Code:
if (gridMesswerte.InvokeRequired)
{
gridMesswerte.Invoke(new MethodInvoker(dataReading));
return;
}
Danach kam die Exception zwar nicht mehr und die dazugehörigen Methode dataReading welche sich um das Einlesen kümmert Arbeitet dann auch aber die GUI blockiert immer noch.
Was mache ich da falsch?
Um den Thread anzuwerfen mache ich übrigens folgendes:
Code:
controlThread = new Thread(new ThreadStart(dataReading));
controlThread.Start();
Gruß Ali.