Entwickler-Ecke
C# - Die Sprache - Ungültiger threadübergreifender Vorgang
ebber - Mo 17.03.08 00:29
Titel: Ungültiger threadübergreifender Vorgang
Hallo
ich bekomme diese Fehlermeldung wenn ich textBox1.Text verändern will.
Additional information: Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Form1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
Ich habe etwas über Invoke gelesen, was dieses Problem verhindern soll? Ich bin aber nicht so ganz dahinter gekommen wie ich das benutze. Kann mir da jemand helfen, bitte?
MfG
ebber - Mo 17.03.08 22:42
Danke. Das hat mein Problem gelöst.
MfG
ebber - Di 18.03.08 14:40
... dachte ich zumindest. Leider ist das nur die halbe Wahrheit.
So funktioniert das jetzt zwar,
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| void AccessToTB() { if (textBox1.InvokeRequired) { textBox1.Invoke(new MethodInvoker(AccessToTB)); return; } textBox1.Text = textBox1.Text + "\r\n" + "xyz"; } |
aber ich möchte der Funktion gerne noch einen Parameter übergeben. Also statt dem "xyz" einen Text über einen Parameter.
Kann mir da jemand bitte weiterhelfen ?
MfG
Th69 - Di 18.03.08 16:33
Hier das Beispiel aus meinem 2. Link:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| delegate void StringParameterDelegate (string value);
void UpdateStatus(string value) { if (InvokeRequired) { BeginInvoke(new StringParameterDelegate(UpdateStatus), new object[]{value}); return; } statusIndicator.Text = value; } |
d.h. du mußt statt dem Standard MethodInvoker nur einen eigenen Delegate erstellen.
ebber - Mi 19.03.08 10:59
Oh, das muss ich wohl überlesen haben.
Aber danke, es funktioniert.
MfG
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!