2016-06-30 9 views
0

Ich schreibe Programm zum Sortieren von Musik. Um Ihre Zeit zu sparen und mein Problem besser zu verstehen, werde ich kurz schreiben. Hier ist mein Problem. Ich habe einen Zyklus in MainMethod. Hier ist ZyklusShowDialog Methode ohne andere Fenster in WPF blockieren

private void OkButton(object sender, RoutedEventArgs e)//when i press ok button in Main window i run cycle 
    { 
     for (int i = 0; i < 50; i++) 
     { 
      //do something. 

      Window window1 = new Window(); 
      window1.ShowDialog();//if i use ShowDialog it blocks MainWindow. 
      //window1.Show();if i use Show it continues creating new windows. in cycle. 
     } 
    } 

Also muss ich verzögern Mainwindow okButton Methode ausgeführt wird, während window1 ist opened.Without Blockierung Hauptfenster.

Antwort

0

Sie können async/await und eine Semaphore entlang dieser Linien verwenden:

private async void Button_Click(object sender, RoutedEventArgs e) 
{ 
    var signal = new SemaphoreSlim(0, 1); 
    for (int i = 0; i < 10; i++) 
    { 
     var window = new Window(); 
     window.Closed += (s, _) => signal.Release(); 

     window.Show(); 

     await signal.WaitAsync(); 
    } 
} 
+0

Dank es funktioniert für mich =) –

+0

Sie sind willkommen. Klicken Sie auf das Häkchen links neben ausreichenden Antworten. (Oder besser gesagt, die eine, die am besten funktioniert, es kann nur eine akzeptierte Antwort geben.) –