Приложение, которое я создаю, содержит значок уведомления, и он находится в активном состоянии в фоновом режиме (ну, вроде). Проблема в том, что когда пользователь нажимает на значок моего приложения, приложение запустится снова, и поэтому у меня есть два значка уведомлений и два действия в фоновом режиме и два из всего. И если пользователь снова нажмет значок, будет три из всех этих вещей и ... так почему-то я должен это прекратить. У меня есть идея установить флаг и установить его значение для реестра, и когда мое приложение захочет начать, в форме load event, прочитав значение, оно прекратит приложение. Но я хочу больше ... профессионального способа справиться с этим. Например, не запускается вообще.Как предотвратить запуск приложения снова и снова
ответ
это от this ответа, который является дубликатом this один. Вы проверяете конструктор записи приложения для того, запущено ли приложение.
static void Main()
{
Process currentProcess = Process.GetCurrentProcess();
var runningProcess = (from process in Process.GetProcesses()
where
process.Id != currentProcess.Id &&
process.ProcessName.Equals(
currentProcess.ProcessName,
StringComparison.Ordinal)
select process).FirstOrDefault();
if (runningProcess != null)
{
ShowWindow(runningProcess.MainWindowHandle, SW_SHOWMAXIMIZED);
return;
}
}
Создайте какую-либо форму глобального дескриптора Mutex/Event, созданного вашим приложением, а затем в вашей открытой рутинной проверке на наличие присутствия, если это так, выйдите из маршрутизации запуска.
У меня есть базовый код здесь, в этом ответе, который я дал (для другой проблемы), но он демонстрирует то, что вы пытаетесь сделать.
могли бы вы говорить так, что вы говорите с несколько любительских?! Возможно с образцом кода или что-то? Вызвать это несколько мое первое реальное приложение спасибо! – roostaamir
Просто чтобы быть ясно, когда вы запускайте новый экземпляр exe, он открывается в другой STA. Они не разделяют переменные, поэтому вы не можете использовать мьютексы или события, поскольку они не используются совместно. Я ошибаюсь? –
GLOBAL \ Mutex видны на всей машине Windows. Вам нужно будет предоставить разрешения, если вы хотите, чтобы их можно было присоединить к ним, но они предоставляют исключения, если они существуют, и у вас нет разрешения. –
- 1. Запуск TestNG тесты снова и снова программно
- 2. Предотвратить запуск сценария снова в php
- 3. Как предотвратить повторное использование нового фрагмента снова и снова?
- 4. Как предотвратить повторение цикла jQuery «fadeToggle» снова и снова?
- 5. Как тестировать в App Purchase снова и снова и снова ...?
- 6. Нужно предотвратить добавление выпадающего списка снова и снова
- 7. Стоп снова и снова
- 8. Запуск программы снова
- 9. Bash - запуск скрипта снова?
- 10. Запуск цикла снова C++
- 11. как предотвратить сохранение изображения из камеры снова снова
- 12. лучший способ вызова функции (снова и снова)
- 13. элемента работает снова и снова
- 14. Диалог сообщений снова и снова
- 15. Уведомления запускается снова и снова
- 16. addEventListener добавление снова и снова
- 17. JFrame открывается снова и снова
- 18. Служба уничтожается снова и снова
- 19. Сайт Magento снова и снова
- 20. код зацикливается снова и снова
- 21. Ошибка анализа снова и снова
- 22. Force Close снова и снова
- 23. Создать класс снова и снова?
- 24. Обновите UIVIew снова и снова
- 25. Как снова и снова запускать AsyncTask?
- 26. Как вызвать URL снова и снова
- 27. Как перезагрузить просмотр снова и снова
- 28. Таблица данных, вставляющая записи снова и снова
- 29. Предотвратить "пост снова" в PHP
- 30. XCode 5: снова и снова сбой при открытии приложения
вы видите, что я говорю, это щелчок по самому приложению (а не значку уведомления) приносит этот случай. Я имею в виду, когда нажимаю на файл app.exe, эта проблема возникает. – roostaamir
Я вижу, когда он говорит, нажимает на значок, он говорит о фактическом значке рабочего стола. Не уверен, что у меня этот код висит где угодно. Я удалю это, если не найду его. –