На главную Наши проекты:
Журнал   ·   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,0241 ]   [ 16 queries used ]   [ Generated: 16.04.24, 14:51 GMT ]