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);
}
}
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!"
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.
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.
Hallo,
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.