Предотвратить несколько экземпляров данного приложения в .NET? - PullRequest
118 голосов
/ 18 сентября 2008

В .NET, как лучше всего предотвратить одновременную работу нескольких экземпляров приложения? И если нет «наилучшего» метода, какие из предостережений следует учитывать при каждом решении?

Ответы [ 22 ]

0 голосов
/ 04 февраля 2009
[STAThread]
static void Main()                  // args are OK here, of course
{
    bool ok;
    m = new System.Threading.Mutex(true, "YourNameHere", out ok);

    if (! ok)
    {
        MessageBox.Show("Another instance is already running.");
        return;
    }

    Application.Run(new Form1());   // or whatever was there

    GC.KeepAlive(m);                // important!
}

От: Обеспечение отдельного экземпляра приложения .NET

и: Применение в одном экземпляре Mutex

Тот же ответ, что и у @Smink и @Imjustpondering с поворотом:

FAQ Джона Скита по C # , чтобы выяснить, почему GC.KeepAlive имеет значение

0 голосов
/ 18 сентября 2008

Обычно это делается с именем Mutex (используйте новый Mutex («имя вашего приложения», true) и проверьте возвращаемое значение), но в Microsoft.VisualBasic.dll также есть несколько классов поддержки, которые может сделать для вы .

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