У меня есть приложение Windows Forms, которое позволяет одновременно запускать только один экземпляр. Я реализовал синглтон с помощью Mutex. Приложение должно запускаться из командной строки (с параметрами или без них). Приложение запускается и закрывается скриптом. Пользователь не может предпринимать никаких действий с ним.
Итак, целью приложения является простое «индикаторное» приложение, которое будет просто отображать некоторую визуальную и графическую информацию для конечного пользователя. Конечный пользователь не может ничего с этим поделать, просто посмотрите. Это приложение для форм Windows, потому что тогда визуальный и графический внешний вид относительно прост в реализации (вы можете получить его сверху, без полей и т. Д.).
Проще говоря:
Как выйти из текущего запущенного приложения, если кто-то пытается запустить то же приложение с параметром командной строки exit?
bool quit = (args.Length > 0 && args[0] == "quit") ? true : false;
using (Mutex mutex = new Mutex(false, sExeName))
{
if (!mutex.WaitOne(0, true))
{
if (quit)
{
// This is the tricky part?
// How can I get reference to "previous" launced
// Windows Forms application and call it's Exit() method.
}
}
else
{
if (!quit)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}