-4

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

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

4

4 回答 4

3

如您发布的文章中所述-

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

因此,您需要为您的App.xaml.cs.

虽然,我个人建议你使用Mutex来实现single instance application. 详情可在此处找到。

于 2013-07-20T09:12:55.350 回答
0

为什么不使用 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();  
        }
  }
于 2013-07-20T09:45:17.007 回答
0

在您的 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();
    }
}
于 2013-07-20T09:17:15.917 回答
0

你为什么不检查系统中正在运行的进程。如果您的应用程序名称在 running processes 中,请不要在您的应用程序中运行它的另一个实例。而是将该实例带入查看。

于 2013-07-20T09:06:41.473 回答