Как отключить закрытие приложения, когда оно не отвечает? - PullRequest
0 голосов
/ 10 июня 2009

Как отключить закрытие приложения, когда оно не отвечает, и просто подождать, пока оно не восстановится?

Ответы [ 6 ]

5 голосов
/ 10 июня 2009

То, что вы спрашиваете, не просто невозможно (любой пользователь с достаточными привилегиями может прервать процесс ... независимо от того, какая ОС), это ужасное решение для взаимодействия с пользователем (UX).

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

Вы можете сделать что угодно, от показа индикатора выполнения прокрутки до долгого процесса обновления некоторой части информации в потоке пользовательского интерфейса (вспомните установщик в середине установки ... он постоянно говорит вам, какие файлы он помещает куда чем просто заставить вас ждать). В любом случае вы должны предоставить пользователю визуальную обратную связь, чтобы он знал, что ваше приложение все еще работает.

2 голосов
/ 10 июня 2009

Если речь идет о программировании, ваша программа никогда не должна находиться в этом состоянии, так как вы каким-то образом связали поток GUI. И вы не можете (и не должны) мешать Windows или пользователю закрывать вашу программу. Они обнаружили, что ваш код является мусором, и имеют полное право принудительно выбрасывать его из своего ценного адресного пространства.

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

В какой-то момент разработчикам нужно понять, что компьютер принадлежит пользователю , а не им.

Конечно, если вы говорите о том, как настроить Windows для предотвращения этого (например, на вашем ПК), то этот вопрос относится к ошибке сервера.

2 голосов
/ 10 июня 2009

Пусть графический интерфейс работает в отдельном потоке, чтобы он (надеюсь) никогда не "не отвечал".

1 голос
/ 10 июня 2009

Не. Независимо от того, насколько важным вы считаете свое приложение, способность ваших пользователей управлять своими системами важнее.

1 голос
/ 10 июня 2009

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

0 голосов
/ 10 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...