直接上代码:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
this.ShutdownMode = ShutdownMode.OnExplicitShutdown;
// 检查是否已有实例在运行
if (IsSingleInstanceApp())
{
MessageBox.Show("应用程序已运行。");
_logger.Info("已有应用程序正在运行,不能同时启动多个,本程序将关闭。");
this.Shutdown(); // 如果已有实例,则关闭当前启动的实例
}
else
{
// 如果没有实例在运行,正常启动应用程序
MainWindow = new MainWindow();
MainWindow.Show();
_logger.Info("正常启动应用程序");
}
}
// 检查是否已有实例在运行
private bool IsSingleInstanceApp()
{
Process currentProcess = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(currentProcess.ProcessName);
// 排除当前进程
return processes.Length > 1;
}