Async ShowDialog

Bin ich mit async/await asynchron laden meine Daten aus der Datenbank und während des Ladevorgangs, ich möchte ein popup laden der form, es ist nur ein einfaches Formular mit laufendem Fortschrittsbalken, um anzuzeigen, dass es einen Laufenden Prozess. Nachdem die Daten geladen wurden, wird der dialog automatisch geschlossen werden. Wie kann ich das erreichen ? Unten ist mein Aktueller code:

 protected async void LoadData() 
    {
       ProgressForm _progress = new ProgressForm();  
       _progress.ShowDialog()  //not working
       var data = await GetData();          
       _progress.Close();
    }

Aktualisiert:

Habe ich es geschafft, es funktioniert durch die änderung der code:

 protected async void LoadData() 
        {
           ProgressForm _progress = new ProgressForm();  
           _progress.BeginInvoke(new System.Action(()=>_progress.ShowDialog()));
           var data = await GetData();          
           _progress.Close();
        }

Ist das der richtige Weg oder gibt es keine besseren Möglichkeiten ?

Vielen Dank für Ihre Hilfe.

  • Ihre aktualisierte Lösung eine mögliche race-condition; GetData könnte theoretisch abgeschlossen sein, bevor das Dialogfeld wird immer angezeigt; so würde es auf dem Bildschirm bleiben auf unbestimmte Zeit (oder, wahrscheinlicher, Sie würde eine ObjectDisposedException).
  • Brauchen Sie das Formular modal sein?
InformationsquelleAutor davidcoder | 2015-10-29
Schreibe einen Kommentar