У меня есть приложение 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());
}
}
}