Ich benutze Async/erwarten, um meine Daten asynchron aus der Datenbank zu laden und während des Ladevorgangs möchte ich ein Ladeformular Popup, es ist nur ein einfaches Formular mit laufenden Fortschrittsbalken, um anzuzeigen, dass es einen laufenden Prozess gibt. Nach dem Laden der Daten wird der Dialog automatisch geschlossen. Wie kann ich das erreichen? Im Folgenden finden Sie meine aktuellen Code:Async ShowDialog
protected async void LoadData()
{
ProgressForm _progress = new ProgressForm();
_progress.ShowDialog() // not working
var data = await GetData();
_progress.Close();
}
Aktualisiert:
schaffte ich es, indem Sie den Code zum Laufen zu bringen:
protected async void LoadData()
{
ProgressForm _progress = new ProgressForm();
_progress.BeginInvoke(new System.Action(()=>_progress.ShowDialog()));
var data = await GetData();
_progress.Close();
}
Ist dies der richtige Weg oder gibt es irgendwelche bessere Möglichkeiten?
Danke für Ihre Hilfe.
Ihre aktualisierte Lösung eine mögliche Race-Bedingung hat; 'GetData' könnte theoretisch abgeschlossen sein, bevor das Dialogfeld jemals angezeigt wird; somit würde es unbegrenzt auf dem Bildschirm bleiben (oder, wahrscheinlicher, würden Sie eine "ObjectDisposedException" erhalten). –
Benötigen Sie das Formular, um modal zu sein? –