Hallo allerseits
Ich steh grad vor einem grösseren Problem, und zwar möchte ich einen Registrierungsvorgang anstossen als allererstes wenn mein Programm lädt. Meine Application_Startup in der Application.xaml.vb seiht so aus:
In der MainWindow.xaml hab ich Folgendes, um beim Laden den Registrierungsvorgang anszustossen. Dies muss ich auf diese Weise tun, und nicht einfach in der Application_Startup, weil sonst das Programm einfriert...
Und zwar dann so:
Funktioniert auch soweit, bis auf die Tatsache, dass ich dann beim weiteren Initialisieren meines Programms dann auf ein Haufen Nullverweisausnahmen stosse.
Bis jetzt hatte ich diese Initialisierung im Konstruktor eines meiner ViewModels, das per DataTemplate mit einer View auf dem MainWindow verknüpft ist. Habs getestet, dieser Konstruktor wird noch vor "Application_Startup wurde ausgeführt" und vor "Registrierung wird gestartet" ausgeführt.
Meine Vermutung ist, dass sich die Application_Startup und der Aufruf aus dem MainViewModel in dei Quere kommen.
Gibt es einen Weg, auf
Denn bisher bekomme ich die MessageBoxen in dieser Reihenfolge:
"Registrierung wird gestartet"
Dann diese:
"Application_Startup wurde ausgeführt"
Ich möchte aber, dass folgende Reihenfolge eingehalten wird:
"Registrierung wird gestartet"
"Registrierung wurde abgeschlossen"
"Application_Startup wurde ausgeführt", also dass da gewartet wird
Ich steh grad vor einem grösseren Problem, und zwar möchte ich einen Registrierungsvorgang anstossen als allererstes wenn mein Programm lädt. Meine Application_Startup in der Application.xaml.vb seiht so aus:
VB.NET-Quellcode
- Private Sub Application_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
- ViewModel.Services.ServiceContainer.Instance.AddService(Of ViewModel.Services.IMainWindowService)(New Services.MainWindowService)
- ...
- ViewModel.Services.ServiceContainer.GetService(Of ViewModel.Services.IMainWindowService).OpenWindow(1000, 500, "Hauptfenster", Nothing, Me) 'hier wird das Hauptanwendungsfenster geöffnet
- MessageBox.Show("Application_Startup wurde ausgeführt")
- End Sub
In der MainWindow.xaml hab ich Folgendes, um beim Laden den Registrierungsvorgang anszustossen. Dies muss ich auf diese Weise tun, und nicht einfach in der Application_Startup, weil sonst das Programm einfriert...
Und zwar dann so:
VB.NET-Quellcode
- Private _Startvorgang As ICommand
- Public ReadOnly Property Startvorgang As ICommand
- Get
- If _Startvorgang Is Nothing Then _Startvorgang = New ViewModel.Instrastructure.RelayCommand(AddressOf Startvorgang_Execute)
- Return _Startvorgang
- End Get
- End Property
- Private Async Sub Startvorgang_Execute(obj As Object)
- MessageBox.Show("Registrierung wird gestartet")
- Dim MeineRegistrierung As New Registrierung
- Await MeineRegistrierung.Start
- MessageBox.Show("Registrierung wurde abgeschlossen")
- WeitereItialisierungen() 'hier soll weiters initialisiert werden
- End Sub
Funktioniert auch soweit, bis auf die Tatsache, dass ich dann beim weiteren Initialisieren meines Programms dann auf ein Haufen Nullverweisausnahmen stosse.
Bis jetzt hatte ich diese Initialisierung im Konstruktor eines meiner ViewModels, das per DataTemplate mit einer View auf dem MainWindow verknüpft ist. Habs getestet, dieser Konstruktor wird noch vor "Application_Startup wurde ausgeführt" und vor "Registrierung wird gestartet" ausgeführt.
Meine Vermutung ist, dass sich die Application_Startup und der Aufruf aus dem MainViewModel in dei Quere kommen.
Gibt es einen Weg, auf
Await MeineRegistrierung.Start
zu warten, bis vollständig beendet?Denn bisher bekomme ich die MessageBoxen in dieser Reihenfolge:
"Registrierung wird gestartet"
Dann diese:
"Application_Startup wurde ausgeführt"
Ich möchte aber, dass folgende Reihenfolge eingehalten wird:
"Registrierung wird gestartet"
"Registrierung wurde abgeschlossen"
"Application_Startup wurde ausgeführt", also dass da gewartet wird