У меня вопрос о динамическом вызове и потоках. Предположим, что у меня есть основной поток, который в какой-то момент показывает диалог.Динамическая цепочка вызовов и сна
public void showDialog()
{
lock(mutexObject)
{
flagDialogShowing = true;
showMssgDialog(properties...);
flagDialogShowing = false;
}
}
Когда я показываю, что Dialog my mainThread получает объект mutexObject и останавливается, пока пользователь не нажмет кнопку «Принять». Так что моя основная нить спала. Если пользователь не нажимает кнопку, и мы ожидаем, что событие будет поднято в другом потоке. Эти события используют dynamicInvoke для вызова предыдущей функции. В этом случае mainThread getUp, и если я не буду использовать flagDialog, будет показано второе диалоговое окно. Это правильно? Что такое dynamicInvoke, если поток не спит? он будет ждать, пока mainThread не будет остановлен? Что произойдет, если я закрою два диалога, как он знает, где продолжить выполнение? Он складывает разные столы и знает, как восстановить старый контекст?
спасибо.