启动单实例项目
本文关键字:项目 实例 单实例 启动 | 更新日期: 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();
}
}