5

Windows 7, кажется, немного переусердствует в закрытии программ, когда считает, что программа перестала отвечать. Некоторые вещи просто занимают много времени, и у меня есть ощущение, что это должно дать вещам немного больше времени, прежде чем я решу, что они больше не работают.

Может ли кто-нибудь просветить меня относительно критериев, которые он использует, чтобы решить, зависла ли программа?

3 ответа3

5

Есть несколько критериев. В общем, необработанные исключения являются главным убийцей. Есть и другие ошибки, но они становятся довольно техническими.

Во-вторых, приложение перестает отвечать на запросы, если отправленные ему сообщения не извлекаются. Windows прикрепляет таймер к сообщениям для каждого приложения. Если это не обрабатывается, то тогда вы получите сообщение без ответа.

В-третьих, приложения могут также явно указать Windows, что процесс завершения приложения может привести к определенным не фатальным ошибкам. Часто это делается для предотвращения повреждения данных.

Какая программа виснет?

редактировать:

Aparently, есть способ , чтобы выключить. По стечению обстоятельств я читал блог команды perfmon и наткнулся на эту статью. Это дает шаги, чтобы явно отключить "двоение" для приложения. Я буду вырезать и вставлять шаги также.

Чтобы загрузить набор средств для обеспечения совместимости приложений, посетите следующий веб-узел Microsoft:

http://msdn2.microsoft.com/en-us/library/aa286552.aspx

Чтобы создать пользовательскую базу данных совместимости приложений:

  1. Установите и запустите средство администрирования совместимости.

  2. Щелкните правой кнопкой мыши Custom Database, а затем нажмите New.

  3. Щелкните правой кнопкой мыши новую базу данных и выберите «Переименовать».

  4. Введите noghost в качестве имени базы данных. (Вы можете назвать это как хотите.)

  5. Щелкните правой кнопкой мыши «Новая база данных», нажмите «Создать новую», а затем нажмите «Исправление приложения». Введите название программы, которая будет исправлена.

  6. Введите название производителя программы.

  7. Найдите и выберите соответствующий файл программы (.exe).

  8. Нажмите кнопку "Далее.

  9. В окне «Режимы совместимости» нажмите «Нет» и нажмите «Далее».

  10. В списке исправлений совместимости щелкните NoGhost.

  11. Нажмите либо Test Run, либо Finish. При нажатии кнопки «Выполнить тест» запускается программа с настройкой совместимости приложения. Нажмите Finish, чтобы добавить исправление совместимости в вашу базу данных.

  12. В меню Файл выберите Сохранить, чтобы сохранить базу данных. Или скопируйте базу данных в папку C:\Windows\AppPatch.

  13. Щелкните правой кнопкой мыши базу данных и выберите «Установить». Или выполните команду sdbinst c:\windows\apppatch\noghost.sdb -q для установки базы данных.

Я сам проверил шаги. , ,

2

Вы можете изменить время ожидания , необходимое для Windows , чтобы рассмотреть заявку (или услугу) как отвечать на запросы, изменяя WaitToKillAppTimeout запись (WaitToKillServiceTimeout для услуг). Это настройка для каждого пользователя.

По умолчанию установлено значение 20 000 миллисекунд (20 секунд), поэтому вы можете попробовать установить его на 30 000 или что-то еще. Кроме того, вы должны иметь возможность нажать кнопку « Cancel в диалоговом окне « Завершить задачу », чтобы дать ему больше времени по требованию.

Другие связанные параметры, которые вы можете изменить, включают HungAppTimeout и AutoEndTasks.

2

Windows 7 не предпринимает никаких попыток закрыть программу, которая не отвечает на запросы до того, как истечет время ожидания, если вы не нажмете на нее или не попытаетесь выполнить другую задачу до того, как она закончит с той, которую она завершает. Возможно, вам повезет больше, если вы просто подождете, пока программа завершит свою работу, прежде чем нажимать на нее, чтобы запустить что-то еще.

Изменение таймаута не изменит это поведение - оно только контролирует, как долго ждет сама Windows, а не пользователь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .