1

В настоящее время я определяю, как производственная среда обрабатывает зависшие / не отвечающие приложения во время завершения работы Windows.

Для проверки этого было бы хорошо иметь фиктивное приложение, которое ничего не делает, кроме как зависает / не отвечает.

  • Моим первым намерением было открыть cmd и запустить ping -t localhost , но это без проблем исчезло.

  • Открытие notepad и ввод чего-либо без сохранения также не помогают, потому что Windows легко обнаруживает, что на самом деле ждет ответа от меня.

  • Написание небольшой Java-программы, состоящей из ничего, кроме while(true) { /* Nonsense */ } является лишь частичным решением, поскольку оно забивает систему, так что ни одно из других приложений не отвечает вовремя.

1 ответ1

0

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

Вопросы, которые касаются этого:

Простой пример для его воссоздания (как один из вопросов, который, вероятно, очень труден для консольного приложения), это создание приложения Windows Forms с кнопкой, и при нажатии кнопки запускается действительно трудоемкое действие (простой while(true) или System.Threading.Thread.Sleep(999999) будет делать). В этот момент GUI больше не сможет отвечать, и процесс перестанет реагировать на сообщения (насколько я могу судить).

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

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