Закрытие консольного приложения Windows Mobile - PullRequest
2 голосов
/ 21 мая 2009

Какой самый лучший и чистый способ закрыть консольное приложение на Windows Mobile?

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

Ответы [ 4 ]

1 голос
/ 21 мая 2009

Выход из основного. Шутки в сторону. Если вам нужно, чтобы кто-то мог выйти вручную, должен быть какой-то механизм, такой как значок оболочки и меню, или программа в папке «Программы» чего-либо. Как еще пользователь узнает, что он работает? Любая из этих визуальных подсказок затем установит именованное системное событие, и в вашем консольном приложении вы сможете прослушивать то же событие (вероятно, работника). Когда он настроен, вы предпринимаете действия, необходимые для выключения.

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

Я решил прочитать логическое значение (сохранить в живых) в файле конфигурации и заставить другое приложение установить его в false, когда я хочу выйти.

Это не так отзывчиво, но, по крайней мере, я могу выйти чисто.

0 голосов
/ 21 мая 2009

Как пользователь сможет закрыть его, если приложение не отображается в пользовательском интерфейсе?

0 голосов
/ 21 мая 2009

Это отличный вопрос. Однажды я потратил long время, пытаясь понять это. Конечно, мы предполагаем, что вы не можете (легко) вернуться из Main. Правильный ответ на рабочем столе: System.Environment.Exit ; Но этот метод удобно не поддерживается на CF.

Очевидным вторым вариантом является Application.Exit . Это относится к CF, но относится только к WinForms и фактически не гарантирует выхода из вашего приложения.

Итак, создайте необработанное исключение. ;)

РЕДАКТИРОВАТЬ: Чтобы убить его программно из другого приложения, вы можете посмотреть Process.GetProcessById и Process.Kill . Оба из них доступны на CF. Вы должны будете каким-то образом позволить приложению «убийца» выяснить идентификатор «жертвы». Более удобные методы, такие как Process.GetProcessesByName , недоступны в CF. Однако этот метод не слишком элегантен, и могут возникнуть проблемы с разрешениями.

Вы также можете рассмотреть какой-нибудь IPC (межпроцессный обмен данными), возможно, тот, который описан в в предыдущем ответе Windows Mobile .

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