Dispatcher.Invoke() funktioniert nicht für die Anwendung

Arbeite ich an einem Projekt für meine Firma, in der Sie verwendet werden Dispatcher.Invoke() in vielen Orten.Wenn ich mit BeginInvoke anstelle von Aufrufen, dann die Synchronisation zwischen threads wunderbar funktioniert, aber im Falle von Aufrufen, die Anwendung friert und auch nicht in der Ausführung, um die delegate-Methode auch. Hat jemand eine Idee, warum es passiert wie diesem?

Jede Antwort wird geschätzt.

Beispielcode für Invoke im Projekt verwendet:

Dispatcher.Invoke(DispatcherPriority.Send,
                  new DelegateMethod(MethodtoExecute));

private delegate void DelegateMethod();

 void MethodtoExecute()
        {
            try
            {

            }
            catch (Exception /*ex*/)
            {

            }
            finally
            {

            }
        }
  • Haben Sie versucht, diese Lösung: stackoverflow.com/questions/264163/...
  • Nein, habe ich nicht versuchen, diese Lösung ließ mich in irgendeine Art und Weise danke für den link 🙂
  • Wir brauchen mehr Informationen: Wie bekommen Sie das Dispatcher? Welcher code ist der Haupt-thread, wenn es friert?
  • Blockieren Sie niemals den UI-thread.
  • Passant: Aber in bestimmten Umständen, die ich nicht zulassen, dass Benutzer den Zugriff auf die Benutzeroberfläche, Also für das, dass ich brauche, um blockieren der UI, bis und es sei denn, ich beende die Arbeit im hintergrund.
  • Aber wenn es mehrere Dispatcher.Invoke/BeginInvoke verwendet wird, in der gesamten Applikation dann werden alle laufen im Main thread ?
  • Nein, Sie verhindern den Zugriff mit der IsEnabled-Eigenschaft. Die Blockierung der ui-thread erzeugt nur deadlock.
  • Passant: Du meinst IsEnabled-Eigenschaft des UI-Steuerelement ?

InformationsquelleAutor SharpUrBrain | 2011-09-29
Schreibe einen Kommentar