Autor Beitrag
dresado
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 04.03.11 14:19 
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:
ausblenden volle Höhe C#-Quelltext
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
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 04.03.11 15:36 
:welcome: in der EE!

Da dein Comport static ist, ist das kein Wunder. Gibt es einen Grund für das static?

_________________
>λ=

Für diesen Beitrag haben gedankt: dresado
dresado Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 04.03.11 16:20 
Hallo Kha,

das wars.
Das static habe ich wohl damals aus der MSDN mitgenommen und es jetzt übersehen.

Danke für die schnelle Hilfe!

MfG dresado