В .NET, как лучше всего предотвратить одновременную работу нескольких экземпляров приложения? И если нет «наилучшего» метода, какие из предостережений следует учитывать при каждом решении?
[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 имеет значение
Обычно это делается с именем Mutex (используйте новый Mutex («имя вашего приложения», true) и проверьте возвращаемое значение), но в Microsoft.VisualBasic.dll также есть несколько классов поддержки, которые может сделать для вы .