启动单实例项目

本文关键字:项目 实例 单实例 启动 | 更新日期: 2023-09-27 18:24:05

我希望我的应用程序只运行一个实例,我使用了下面粘贴的代码,但它给了我一个错误:

Error   1   'MYAPP.App' does not implement interface member 
            'Microsoft.Shell.ISingleInstanceApp.SignalExternalCommandLineArgs
             (System.Collections.Generic.IList<string>)'
            C:'Users'moataz'Desktop'MYAPP 26-06-2013'MYAPP'App.xaml.cs

http://www.codeproject.com/Articles/84270/WPF-Single-Instance-Application

启动单实例项目

如您发布的文章所述-

步骤3:让应用程序类实现ISingleInstanceApp(在SingleInstance.cs中定义).

因此,您需要为App.xaml.cs实现此接口。

不过,就我个人而言,我建议您使用Mutex来实现single instance application。可以在这里找到侦探。

为什么不检查系统中正在运行的进程。如果您的应用程序名称在运行进程中,请不要运行它的另一个实例—您的应用。相反,把这个例子拿出来看看。

在App.xaml.cs中添加以下代码,看看它是否适合您。

static EventWaitHandle s_event;
bool created;  
App()
{
    s_event = new EventWaitHandle (false, EventResetMode.ManualReset, "my program#startup", out created) ;
    if (!created)
    {
        if (MessageBoxResult.OK == MessageBox.Show("Only 1 instance of this application can run at a time", "Error", MessageBoxButton.OK))
            App.Current.Shutdown();
    }
}

为什么不使用Mutex,您可以在App.xaml.cs中执行此操作

 Mutex myMutex ;
 private void Application_Startup(object sender, StartupEventArgs e)
 {
    bool aIsNewInstance = false;
    myMutex = new Mutex(true, "MyWPFApplication", out aIsNewInstance);  
       if (!aIsNewInstance)
        {
          MessageBox.Show("Already an instance is running...");
          App.Current.Shutdown();  
        }
  }