На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: jack128, Rouse_, Krid
  
    > Перезапуск текущего процесса , Как перезапустить программу
      Цитата
      Прокоментируйте, пожалуйста, что значит строка:
      {Halt}PostQuitMessage(0)

      Это завершение работы программы. Вообще, способов много, вот основные:

      1. ExitProcess или TerminateProcess самое "грубое" завершение. Процесс немедленно завершается, никакая финализация не производится, никаких возможностей прервать завершение процесса либо сохранить данные после вызова нет.
      2. Halt - чуть более мягкое завершение. Перед завершением выполняется финализационный код юнитов, также вызывается ExitProc.
      3. PostQuitMessage - еще более мягкое. Сообщение о завершении кладется в очередь, но выполнение кода не прерывается, он продолжает выполнение с того же места. Далее цикл выборки сообщений извлекает его (но перед этим будут обработаны все остальные сообщения из очереди, кроме очереди виртуального ввода, сообщений WM_PAINT и WM_TIMER из-за их низкого приоритета), и в обработчике этого сообщения вызывается Halt
      4. Application.Terminate - еще мягче. Вызывается CallTerminateProcs, затем - PostQuitMessage. При этом есть возможность прервать завершение процесса из одной из TerminateProcs, вернув в ней False, а также выполнить некоторые действия.
      5. Закрытие главной формы - еще мягче. Есть возможность прервать закрытие из обработчика OnCloseQuery и выполнить очистку/сохранение результатов. Если закрытие разрешено - вызывается OnClose и Application.Terminate
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0149 ]   [ 17 queries used ]   [ Generated: 28.03.24, 17:45 GMT ]