vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
aus einem anderen Thread auf ein WPF-Window - oder wo ist der Dispatcher?! 
Autor: MikeJ
Datum: 28.10.10 21:22

Hallo zusammen

ich habe mir in meiner WPF-Anwendung aus Design- und Funktionalitäts-Gründen eine eigene MessageBox zur Meldungsausgabe gebastelt. Das Teil funktioniert soweit sehr gut, solange alles in dem Thread abläuft der auch auf die UI zugreifen darf.
Da aber bekanntlich auch Hintergrund-Threads Fehler erzeugen können und ich diese auch ausgeben will muss ich zur Meldungsausgabe den Thread wechseln. Bisher habe ich das mit 2 verschiedenen Aufrufen realisiert "mybox.ShowDialog(...)" und "mybox.ShowDialogThread(...)" - die zweite sorgt wie der name schon sagt für den nötigen Thread Wechsel.
Meine erste Frage: kann ich in der Sub "ShowDialog" irgendwie feststellen ob ich der aufrufende Thread zugriff auf die UI hat?! Denn dann könnte ich mir den separaten Aufruf mittels "ShowDialogThread" sparen?

Meine 2 Frage ist: Wie komme ich aus einem Hintergrund-Thread an den Dispatcher für das UI?!
Ich habe mir bisher einen kleinen "Workaround" gebastelt der mir aber nicht gefällt:
Beim Start der Anwendung schreibe ich mir den UI-Dispatcher in eine globale Variable. In "ShowDialogThread" nutze ich dann diese Variable wieder für den Invoke:
Public Class myWindow
 
    Public Sub New()
    ...
    DispatcherSaver.MainWindowDispatcher = Me.Dispatcher 'Den Dispatcher für 
    ' spätere Zugriffe speichern
    ...
    End Sub
 
    ...
 
End Class
Public Class mybox
 
    ...
 
    Delegate Sub CallErr(...)
 
    Public Sub ShowDialogThread(...)
        Dim del As New CallErr(AddressOf ShowDialog)
        ...
        MainWindowDispatcher.Invoke(del, objArr)
    End Sub
 
    ...
 
End Class
 
Public Module DispatcherSaver
    Public MainWindowDispatcher As Dispatcher 'Hier wird der Dispatcher 
    ' gespeichert
End Module
Ich hoffe, man kann verstehen was mein Problem ist

Viele Grüße
Mike
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
aus einem anderen Thread auf ein WPF-Window - oder wo ist de...2.880MikeJ28.10.10 21:22
Re: aus einem anderen Thread auf ein WPF-Window - oder wo is...1.966Maas28.10.10 21:47
Re: aus einem anderen Thread auf ein WPF-Window - oder wo is...1.951MikeJ28.10.10 22:07

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel