2015-03-31 3 views
0

Я создал приложение Windows с использованием C# (.NET Framework v4.0). Назначение приложения - это разнообразие интеграции API сторонних приложений в один.Application Exit Control

В настоящее время я столкнулся с проблемой, когда клиент запускает запросы API. По какой-то причине, как медленность Интернета, API-ответ занимает немного больше времени. Пользователь закрывает приложение с помощью кнопки Red Application Exit или в некоторых редких случаях использует Task Manger для выхода из приложения.

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

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

Решение При реализации

  • Использование глобальной переменной, когда запрос приложения API находится в стадии разработки.
  • Использовать триггер события OnClosing формы MDI для проверки состояния переменной и блокировки выхода приложения.

Этот метод не будет блокировать сценарий закрытия приложения диспетчера задач.

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

+0

Событие 'form.FormClosing' дает основание для закрытия. – Loathing

ответ

0

Невозможно предотвратить использование пользователем убийства работающего приложения через диспетчер задач.

команда уничтожения Task ясли разработана, чтобы убить приложение висит (независимо от того, что он делает в данный момент)

Лучшим решение: Избегайте вывешивание вашего приложения, обеспечивает чистые способы выхода из вашего приложения. Просветите своих пользователей, чтобы использовать диспетчер задач как (очень) последнее средство.

+0

Как можно избежать этого висячего приложения. В сценариях, где медленное подключение к Интернету, я не мог реализовать решение. Проблема заключается в очень ограниченном числе ситуаций, но все же она отражает как Dirty API. – Dilip

+0

Это еще один интересный вопрос для SO. как правило: выполнять все временные/длительные задачи _asynchronous_. Подробности выходят за рамки этого комментария – DrKoch

Смежные вопросы