2016-06-30 25 views
0

私は音楽をソートするためのプログラムを書いています。 あなたの時間を節約し、私の問題をよりよく理解するために、私は短い文章を書いていきます。 これは私の問題です。 MainMethodにいくつかのサイクルがあります。ここ はWINDOW1は、メインウィンドウをブロックしopened.Withoutありながら、だから私は、メインウィンドウOKボタンメソッドを実行遅延する必要がサイクルWPFの他のウィンドウをブロックしないでShowDialogメソッド

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. 
     } 
    } 

です。

答えて

0

あなたはこれらの線に沿ってasync/awaitやセマフォを使用することができます:それは私の作品

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

感謝を=) –

+0

どういたしまして。十分な答えの左側にあるチェックマークを押してください。 (あるいは、最も効果的なのは、受け入れられる答えが1つだけです)。 –

関連する問題