Как запустить только один экземпляр exe с 3.5 .NET Framework и CE Windows 5.0 - PullRequest
0 голосов
/ 28 января 2011

Я искал долго и упорно для ответа на мой вопрос и нашел ответы только в классе, который не существует в 3.5 .NET рамок версии (и с CE Windows 5.0.) Кроме того, это Visual C # с видеоStudio 2008.

Когда я пытаюсь сделать следующее (используя System.Threading)

 bool ok;
 Mutex myMutex = new Mutex();
 ok = Mutex(true,"scanner", out ok);

Компилятор жалуется, что Mutex является типом, но используется как переменная.Если я использую [STAThread], он также жалуется, что не может его найти, и я вынужден использовать [MTAThread].

Являются ли классы для мобильных устройств типа программ на c # одинаковыми для консолиоснованные на них? Я несколько новичок в этом, и идея о том, как объявить, использовать, заблокировать и все, что вы хотели знать о мьютексе, вызывает у меня головную боль. OO Я подозреваю, что это потому, что классы отличаются от версий консолимобильные версии.

Кажется, что это так просто: создать мьютекс, проверить его существование, если это так, не запускать новый экземпляр exe. Это все, что я хочу ... просто запустить один экземпляр любогоexe. Это мобильное устройство, поэтому оно является автономным, и мне больше не нужно беспокоиться о том, чтобы кто-нибудь еще использовал .exe. Просто нужно помешать пользователю нажать кнопку «Пуск» 15 раз и запустить 15 экземпляров приложения (потом жаловаться нанизкое использование памяти!)

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

1 Ответ

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

Один из подходов к этому - открыть файл для записи. Только один экземпляр приложения может получить эту блокировку одновременно. При запуске попробуйте получить дескриптор файла для записи, в случае сбоя должен быть запущен другой экземпляр: немедленно завершиться.

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

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