ShowDialog方法没有阻止WPF中的其他窗口

时间:2016-06-30 20:20:47

标签: c# wpf

我编写用于排序音乐的程序。 为了节省您的时间和更好地理解我的问题,我会写简短的。 这是我的问题。 我在MainMethod中有一些循环。 这是循环

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

所以我需要延迟执行MainWindow OkButton方法,而window1打开。没有阻止主窗口。

1 个答案:

答案 0 :(得分: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();
    }
}