Hallo Zusammen,
vorweg ich bin neu im Forum.
Deswegen bitte ich darum mich auf Fehler aufmerksam zu machen. Vielen Dank.
Zu meinem Problem:
Ich Schreibe ein Programm, welches Daten einer Feinwaage liest, aufbereitet und auswertet.
Das ist kein Problem.
Sollte ich das Formular schließen und öffne ich es während der Laufzeit neu,
wird mir die Fehlermeldung "Cannot access a disposed object. Object name: 'TextBox'" ausgegeben,
sobald neue Daten an dem COMPort ankommen.
Bevor ich das Formular schließe wird der COMPort mit COMport.Close() regulär geschlossen.
Ich habe so ne Ahnung, dass beim Dispose() des Formulars der COM-Reading-Thread nicht beendet wird.
Hier mein Code zum lesen der ankommenden Daten:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| private static SerialPort COMport = new SerialPort(); delegate void SetTextCallback(string text);
private void Form1_Load(object sender, EventArgs e) { COMport.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(datareceived); }
private void datareceived(Object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { this.SetText(COMport.ReadExisting()); } catch (Exception ex) { MessageBox.Show(ex.Message); }
}
private void SetText(string text) { if (this.txt_Ausgabe.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); this.Invoke(d, new object[] { text }); } else { this.txt_Ausgabe.AppendText(text); } } |
Ich hoffe Ihr könnt mir helfen.
MfG dresado