Как проверить уже запущенный exe в c # .net? - PullRequest
3 голосов
/ 02 февраля 2010

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

Ответы [ 4 ]

3 голосов
/ 02 февраля 2010

Вы должны использовать Mutex класс, как описано здесь: Лучший способ реализовать синглтон в консольном приложении C #?

РЕДАКТИРОВАТЬ: У меня есть это вмой код:

class Program
{
    public const string AppName = "...";
    private static readonly Mutex mutex = new Mutex(true, Program.AppName);

    public Program()
    {
        if (!mutex.WaitOne(TimeSpan.Zero, true))
            throw new ApplicationException("Another instance already running");
    }
}
1 голос
/ 02 февраля 2010

Вы можете использовать имя Mutex.

Именованные системные мьютексы видны во всей операционной системе, и может быть использован для синхронизации деятельность процессов. Вы можете создать объект Mutex, который представляет именованный системный мьютекс с помощью конструктор, который принимает имя.

0 голосов
/ 26 апреля 2012

Использование мьютекса не применимо, если вы используете фоновый рабочий. Если backgroundWorker занят, он может иметь несколько экземпляров.

...