C# MessageBox/ShowDialog()如何阻止程序继续?

C# MessageBox/ShowDialog()如何阻止程序继续?,c#,wpf,C#,Wpf,当您显示消息框或其他类型的对话框,如OpenFileDialog或您使用ShowDialog()创建和调用的窗口时,该方法内部发生了什么情况,以防止应用程序在等待设置DialogResult时继续运行 public static bool MyDialog.Show(string message) { //what happens here to keep the program from continuing? //Oh! DialogResult was finally set

当您显示
消息框
或其他类型的对话框,如
OpenFileDialog
或您使用
ShowDialog()
创建和调用的窗口时,该方法内部发生了什么情况,以防止应用程序在等待设置
DialogResult
时继续运行

public static bool MyDialog.Show(string message) {
   //what happens here to keep the program from continuing?

   //Oh! DialogResult was finally set...
   return DialogResult;
}


private void OkButton_Click(object sender, RoutedEventArgs e) {
    DialogResult = true
}

它不像你可以只放置一个while(true)循环,然后等待用户点击ok,那么在后台到底发生了什么呢?

请参阅(以及其他关于
DispatcherFrame
)DispatcherFrame是一个c的东西,并不能真正回答这个问题。模式窗口通过c#调用的基础Win32 API进行控制。。对于DispatcherFrame。。这就是它的名字。Windows通过一种称为“模式窗口”的机制来实现这一点。作为基础“CreateWindow”调用的标志调用。Windows起作用。@SeñorCMasMas我认为对“在等待设置DialogResult时阻止应用程序继续”这句话有两种解释。我猜想他是在问对
窗口的调用。ShowDialog
直到对话框关闭后才返回,但仍然处理调度程序消息,答案绝对是“调度程序帧”。我想你是在回答“为什么用户只能与模式窗口交互,而不能与其父窗口交互”的问题,这在WinAPIT中绝对是一个较低的层次,它是一个
while
循环,我称之为while循环。while循环是一个消息泵!:^)我不是有意要伤害任何人。。消息pump也发生在非模式窗口上。。所有窗口都有一个泵。请参阅(以及
DispatcherFrame
上的其他文档)DispatcherFrame是一个c#东西,并不能真正回答这个问题。模式窗口通过c#调用的基础Win32 API进行控制。。对于DispatcherFrame。。这就是它的名字。Windows通过一种称为“模式窗口”的机制来实现这一点。作为基础“CreateWindow”调用的标志调用。Windows起作用。@SeñorCMasMas我认为对“在等待设置DialogResult时阻止应用程序继续”这句话有两种解释。我猜想他是在问对
窗口的调用。ShowDialog
直到对话框关闭后才返回,但仍然处理调度程序消息,答案绝对是“调度程序帧”。我想你是在回答“为什么用户只能与模式窗口交互,而不能与其父窗口交互”的问题,这在WinAPIT中绝对是一个较低的层次,它是一个
while
循环,我称之为while循环。while循环是一个消息泵!:^)我不是有意要伤害任何人。。消息pump也发生在非模式窗口上。。所有窗户都有水泵。