Thradsicherer button.performClick()

Gast #3243124
Lesenswert?
• ▲
▼
Ist das dann die Lösung wenn diese Fehlermeldung kommt?


Ungültiger threadübergreifender Vorgang: Der Zugriff auf das
Steuerelement menuStrip1 erfolgte von einem anderen Thread als dem
Thread, für den es erstellt wurde.
Gast #3243127
Lesenswert?
• ▲
▼
Markus schrieb:
> Ungültiger threadübergreifender Vorgang: Der Zugriff auf das
> Steuerelement menuStrip1 erfolgte von einem anderen Thread als dem
> Thread, für den es erstellt wurde.

nein, das ist ein anderes Problem

dieses "Problem" wurde schon ausreichend gelöst

einfach mal bei googel "Ungültiger threadübergreifender Vorgang" suchen.

Dann wirst du dinge wie invoke finden.
Gast #3243168
Lesenswert?
• ▲
▼
ah ok

kann ich etwas mehr Hilfe bekommen, für mein Problem mit diesem Fehler?

Ungültiger threadübergreifender Vorgang: Der Zugriff auf das
> Steuerelement menuStrip1 erfolgte von einem anderen Thread als dem
> Thread, für den es erstellt wurde.
Gast #3243324
Lesenswert?
• ▲
▼
1
private void Function()
2
{
3

4
  System.Object lockThis = new System.Object();
5

6
                lock (lockThis)
7
                {
8
                    toolStripStatusLabel6.Text = i.ToString();
9
                }
10
}

So geht es aber nicht!

Kann mir jemand sagen, wieso es so nicht geht?
#3243338
Lesenswert?
• ▲
▼
Dein Lock verhindert ja nur, dass genau dieser Codeteil von einem 
anderen Thread ausgeführt wird. Andere asynchone Manipulationen am 
Objekt werden nicht verhindert.

Die Änderung am Objekt muss vom Vordergrundthread geschehen. Und das 
erreicht man bequem mit Invoke.
Gast #3243464
Lesenswert?
• ▲
▼
Eine Möglichkeit wäre z.B.:
[/code]
// this. ist hierbei die Form oder ein anderes Objekt, das Invoke() 
unterstützt und im GUI-Thread erzeugt wurde.
this.Invoke((MethodInvoker)delegate
{
    // (X) Hierhin, den Code der im GUI-Thread ausgeführt werden soll
});
[/code]

Stark vereinfacht - Durch den Invoke wird:
1) der Code, der im GUI-Thread läuft an geeigneter Stelle unterbrochen
2) dann im GUI-Thread (X) ausgeführt
3) und dann läuft der normale Code im GUI-Thread weiter und ebenso der 
Thread, der Invoke aufgerufen hat.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren