我有一个 Windows 窗体应用程序,它当时只允许一个实例运行。我已经使用 Mutex 实现了 Singleton。应用程序必须可以从命令行启动(带或不带参数)。应用程序由脚本启动和退出。用户不能对其采取任何行动。
因此,应用程序的目的是简单的“指标”应用程序,它只会为最终用户显示一些视觉和图形信息。最终用户不能用它做任何事情,只是看到它。它是 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());
}
}
}