我编写用于排序音乐的程序。 为了节省您的时间和更好地理解我的问题,我会写简短的。 这是我的问题。 我在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打开。没有阻止主窗口。
答案 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();
}
}