2010-11-22 6 views
1

i solchen Code haben, in Callback-Funktion.net crossthreading Probleme

try{ 
    text.Invoke(new MethodInvoker(() => text.AppendText("test"))); 
    } 
catch (Exception e) 
     { 
      text.Invoke(new MethodInvoker(() => text.AppendText(e.Message))); 
     } 

Text ist winforms.textbox und der text.Invoke an .. Ich habe "Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException" Warum? dieser Weg hat immer für mich funktioniert.

+0

Haben Sie vielleicht * irgendwelche * UI-Steuerelemente auf Hintergrund-Threads * erstellt? –

+0

nicht verstanden – eba

+0

Einfach, es gibt nichts Offensichtliches dort, das sollte dies verursachen - so klingt es wie etwas ist seltsam * außerhalb * der Code, den wir sehen können. Ich frage mich, ob das Problem ist, wo/wie 'Text' erstellt wird. Aber das ist sehr schwer zu sagen. –

Antwort

0

Ich nehme an, dass //blahblahblah etwas tut, das mit einer oder mehreren UI-Steuerelementen spricht? Vielleicht um Werte zu lesen/schreiben? Das wird nicht funktionieren, aufgrund Thread-Affinität. Wenn Sie mit den UI-Steuerelementen sprechen, verwenden Sie Invoke, um früher in den UI-Thread zu gelangen. Sie können natürlich externe Daten während des Hintergrundthreads abfragen.

+0

ok, blablabla = text.Invoke (neuer MethodInvoker (() => text.AppendText ("test"))); – eba

Verwandte Themen