Hallo,
ich habe in meiner WPF-MVVM-Anwendung einen Splashscreen, welcher läuft während alle Childwindows geladen werden. Einige Childwindows laden sich daten aus einer Datenbank. Diesen vorgang lasse ich in einem Backgroundworker ausüben, dass Windows nicht nach ein paar sekunden sagt : Das Programm reagiert nicht.
Mein Problem: Immer wenn ein Fenster geladen wurde und ich eine Progressbar neu setzte, verzögert sich das alles. Das heißt die Progressbarist halbvoll wenn der Splash geschlossen wird und die Anwendung bereits voll geladen hat...
Ich schiebe das alles mit:
diesem code an. Wie kann ich es machen dass die Progressbar im Screen auch "korrekt" den Fortschritt zeigt?
Gruß, Flo
ich habe in meiner WPF-MVVM-Anwendung einen Splashscreen, welcher läuft während alle Childwindows geladen werden. Einige Childwindows laden sich daten aus einer Datenbank. Diesen vorgang lasse ich in einem Backgroundworker ausüben, dass Windows nicht nach ein paar sekunden sagt : Das Programm reagiert nicht.
Mein Problem: Immer wenn ein Fenster geladen wurde und ich eine Progressbar neu setzte, verzögert sich das alles. Das heißt die Progressbarist halbvoll wenn der Splash geschlossen wird und die Anwendung bereits voll geladen hat...
Ich schiebe das alles mit:
Code:
public static class DispatcherHelper { /// <summary> /// Simulate Application.DoEvents function of <see cref=" System.Windows.Forms.Application"/> class. /// </summary> [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] public static void DoEvents() { DispatcherFrame frame = new DispatcherFrame(); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrames), frame); try { Dispatcher.PushFrame(frame); } catch (InvalidOperationException) { } } /// <summary> /// /// </summary> /// <param name="f"></param> /// <returns></returns> private static object ExitFrames(object frame) { ((DispatcherFrame)frame).Continue = false; return null; } }
Gruß, Flo
Comment