为了实现程序单例运行,我使用了WindowsFormsApplicationBase,如下:public class SingleInstanceManager : WindowsFormsApplicationBase
{
Form m_Mainapp;
public SingleInstanceManager(Form app)
{
m_Mainapp=app;
IsSingleInstance=true;
}
protected override bool OnStartup(StartupEventArgs eventArgs)
{
Application.Run(m_Mainapp);
return false;
}
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
MessageBox.Show("已运行");
}
}现在我在两个需要单例运行的程序中使用这个SingleInstanceManager
A程序:
MainFormA forma=new MainFormA();
SingleInstanceManager manager=new SingleInstanceManager(forma);
manager.Run(null);
B程序:
MainFormB forma=new MainFormB();
SingleInstanceManager manager=new SingleInstanceManager(formb);
manager.Run(null);
现在发现问题:
当只重复运行A程序或B程序时,工作正常。但是,如果启动了一个A程序,再启动B程序,却提示不能再运行。即认为了B程序也是A程序的实例了。但是A程序和B程序是没有任何关系的,请问这个怎么解决?
{
Form m_Mainapp;
public SingleInstanceManager(Form app)
{
m_Mainapp=app;
IsSingleInstance=true;
}
protected override bool OnStartup(StartupEventArgs eventArgs)
{
Application.Run(m_Mainapp);
return false;
}
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
MessageBox.Show("已运行");
}
}现在我在两个需要单例运行的程序中使用这个SingleInstanceManager
A程序:
MainFormA forma=new MainFormA();
SingleInstanceManager manager=new SingleInstanceManager(forma);
manager.Run(null);
B程序:
MainFormB forma=new MainFormB();
SingleInstanceManager manager=new SingleInstanceManager(formb);
manager.Run(null);
现在发现问题:
当只重复运行A程序或B程序时,工作正常。但是,如果启动了一个A程序,再启动B程序,却提示不能再运行。即认为了B程序也是A程序的实例了。但是A程序和B程序是没有任何关系的,请问这个怎么解决?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货