Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Ungültiger threadübergreifender Vorgang beim Zugriff auf das GUI per TraceListener
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

Ungültiger threadübergreifender Vorgang beim Zugriff auf das GUI per TraceListener

beantworten | zitieren | melden

Die Fehlermeldung "Ungültiger threadübergreifender Vorgang" bekomme ich relativ häufig hin und ich verstehe nicht wie es dazu kommt. Ich hab diesmal als Beispiel ein 4 Zeilen Beispiel dabei (im Anhang der ganze Code).

Ein Hauptprogramm mit einem BackGroundWorker und ein zweiter Thread der Trace.Listeners macht. Beim Arbeiten mit beidem kommt die besagte Fehlermeldung, aber warum?


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync(null);
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            System.Diagnostics.Debug.Write("Hallo");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            System.Diagnostics.DebugConsole.Instance.Init(false, true);
        }

    }
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von digi333 am .
Attachments
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7547
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

mittlerweile solltest du wissen dass es eine Forensuche und FAQ gibt.
zB [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)


Beachte bitte auch [Hinweis] Wie poste ich richtig? Punkt 1.1


mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
digi333
myCSharp.de - Member



Dabei seit:
Beiträge: 302

Themenstarter:

beantworten | zitieren | melden

Danke für den Hinweis, aber wie hilft mir das Thema Invoke(), BackgroundWorker und nicht blockierende Gui's weiter, wenn ich eine Frage zu der Kombination habe? Also genau das Thema, dass danach kommt. Ich kann die Dinger erzeugen, jedoch bekomme ich Fehler wenn ich sie gleichzeitig verwende.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

Zitat von digi333
Danke für den Hinweis, aber wie hilft mir das Thema Invoke(), BackgroundWorker und nicht blockierende Gui's weiter, wenn ich eine Frage zu der Kombination habe?
Tja, musst du kombinieren: Du hast einen TraceListener, und der greift auf ein form zu.
Und der BGW läßt den TraceListener tracen. Was denkst du, aus welchem Thread wird ins Form gegrabscht?
Anderer Ansatz: Bei mir gibts eine Fehlermeldung mit blauer Schrift. Das ist ein Link, der wo hinführt, wos auch nochmal erklärt wird.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Tarion
myCSharp.de - Member



Dabei seit:
Beiträge: 386

beantworten | zitieren | melden

Debug mal was in der variable folgenden steht:


this.InvokeRequired
private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

Hallo,
Zitat von digi333
Ich hab diesmal als Beispiel ein 4 Zeilen Beispiel dabei (im Anhang der ganze Code).

bitte beachte [Hinweis] Wie poste ich richtig? 4.1 und 5. Deinen geposteten Zeilen kann ich nicht entnehmen, wann und wo eine Exception auftritt.

Die Antwort scheint doch nach dem Hinweis auf die FAQ von gfoidl auch offensichtlich: irgendwo greifst Du aus einem Hintergrundthread auf die GUI zu. Dies zu finden kann doch nicht so schwer sein, da Visual Studio Dir Auftreten der Exception und StackTrace anzeigt.
private Nachricht | Beiträge des Benutzers