2017-01-05 11 views
0

Итак, у меня есть очень большой проект с несколькими приложениями. Один, в частности, скажем, APP1, не может запускаться, если другой, в частности, уже запущен, скажем, APP2.Проект запуска по умолчанию в Visual Studio всегда имеет запущенный процесс

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

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

Есть ли способ обойти это без учета этой проверки, когда в отладочном сеансе и только проверка существующего APP2.exe и игнорирование экземпляра .vshost?

+1

A [Mutex] (https://www.dotnetperls.com/mutex) должен решить вашу проблему – Rabban

+0

@Rabban первое приложение должно быть эксклюзивным, если второе открыто, если второе не открыло несколько экземпляров первый может быть открыт ... –

+0

вы можете добиться этого с помощью Mutex. Создайте Mutex при запуске App2 и проверьте, существует ли Mutex при запуске App1. Если да, создайте Mutex для App1, если нет, просто запустите App1. – Rabban

ответ

1

Решение было отключить процесс хостинга Visual Studio для проекта. Я не хочу оставаться в списке процессов, когда не работает. Есть плюсы и минусы для процесса хостинга, а за минусы в моем случае это того стоило.