Я хочу показать диалог как модальный (т.е. блокировать все взаимодействия со всеми другими пользовательскими интерфейсами в моем приложении) Но я не хочу, чтобы этот вызов блокировал выполнение, как мне это сделать?
Этоэто не красиво, но по независящим от нас причинам у нас есть только один поток, и мы не можем создать больше. В настоящее время, когда мы выполняем процесс, требующий много времени, мы хотим показать индикатор выполнения, но для того, чтобы он обновлялся во время процесса, мы должны вызвать DoEvents () (eek).
Это неудивительно, что иногда возникает несколько проблем, но если бы мы могли легко отключить все интерфейсы, кроме индикатора выполнения, это могло бы помочь.
Я получил эту идею, прочитав этот ответ здесь: https://stackoverflow.com/a/5183623/259846
Редактировать: модальное диалоговое окно - это просто диалоговое окно, которое отключает все остальные интерфейсы - с ним может взаимодействовать только модальное диалоговое окно. Это отдельно от того, блокирует ли операция, чтобы показать это диалоговое окно или нет. Я не вижу причин, по которым у вас теоретически не может быть функции, которая показывает модальное диалоговое окно без блокировки, пока окно не закроется.
Я хочу показать индикатор выполнения и хочу этот прогресспанель для обновления по мере продвижения процесса, мне неважно, как я это делаю, дело в том, что если вы хотите обновить одно диалоговое окно, вы должны обновить весь пользовательский интерфейс. Поэтому я хочу, чтобы остальная часть пользовательского интерфейса, кроме окна прогресса, была отключена, чтобы с ним нельзя было взаимодействовать во время выполнения моего процесса.
И да, у меня может быть только один поток, без параллелизма,