Ханс Пассант дал мне отличный ответ here, поэтому я подумал просить более подробную информацию, чтобы попытаться понять, как работает Application.Run()
.VB.Net: Понимание того, как работает Application.Run()
Насколько я понимаю из документов, кажется, что Application.Run()
запускает цикл сообщений в текущем потоке, который по очереди позволяет обрабатывать ввод пользователя (это правильно?). Перегруженная версия Application.Run(Form)
в основном делает то же самое, только она существует, когда форма закрывается, и она показывает форму по умолчанию.
Это поднимает несколько вопросов:
Main()
подразделов функции, которая может взаимодействовать с пользователем (окно сообщений и так далее) и ждать его выхода?ShowDialog
могла бы работать, если вы не хотите, чтобы форма немедленно отобразить при запуске- В принципе, ситуация будет выглядеть следующим образом (например, если у вас есть для этого запускаемую сворачивается в системный трей.): Суб `Main` имеет список задач для выполнения в 20mn, с иконкой в системном трее, сообщающей пользователю, что программа будет работать в 20mn. Таймер гаснет после 20 минут, и он должен выполнить около ок. 15 задач один за другим, каждый раз создавая экземпляр диалогового окна прогресса, изначально скрытого в панели задач.
- `ShowDialog` отобразит форму, которая не нужна; поэтому способ, которым я это сделал бы, - передать диалог прогресса обратному вызову функции, которая запускает следующую задачу. Но это не выйдет из первой формы прогресса до того, как вторая выйдет, не так ли? Что означает, что 15 форм в конечном итоге будут открыты ...
- Таким образом, решение может заключаться в вызове (begininvoke?) Обратного вызова в основном цикле приложения ... Только, я не знаю, как это сделать, потому что я не имеет формы, связанную с петлей для вызова обратного вызова на ...
Я надеюсь, что мои вопросы ясно (я мог бы смутить много вещей, извините),
Спасибо,
CFP.
Ганс, вы определенно рок =) Спасибо за ваш подробный и полный ответ. Престижность вам :) –