我有一个关于动态调用和线程的问题。假设我有一个主线程,在某些时候会显示一个对话框。
public void showDialog()
{
lock(mutexObject)
{
flagDialogShowing = true;
showMssgDialog(properties...);
flagDialogShowing = false;
}
}
当我显示 Dialog 时,我的 mainThread 获取 mutexObject 并停止,直到用户单击接受按钮。所以我的主线程正在睡觉。如果用户不按下按钮并且我们等待另一个线程中引发事件。该事件使用 dynamicInvoke 调用前一个函数。在这种情况下 mainThread getUp 如果我不使用 flagDialog 它将显示第二个对话框。这是正确的吗?如果线程没有休眠,dynamicInvoke 会做什么?它会等到 mainThread 停止?如果我关闭这两个对话框,它如何知道在哪里继续执行会发生什么?它堆叠了不同的调用栈并知道如何恢复旧的上下文?
非常感谢。