我现在有一个Winform程序,这个程序只能启动一个实例,但是每次启动的时候都会有启动参数。
/// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) // 第二次启动时,args 的参数需要传递给已经启动的实例,并退出当前实例
限制启动单个实例我知道怎么实现,但是当我第二次启动时,我如何把Main函数的参数 args 数组传递给已经启动的第一个实例?
求各位大侠指点。。。
自己找到解决方案了,使用 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase (引用:Microsoft.VisualBasic.dll), 参考文章:
通过文件传递,两个进程读写同一个文件,仅供参考。或读写同一个数据库表,同一个注册表项等
这个太方法太。。。。那个什么了。我已经找到比较好的解决方案了。
static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Mutex mutex = new Mutex(false,"SINGLE_INSTANCE_MUTEX"); if (!mutex.WaitOne(0,false)) { mutex.Close(); mutex.Dispose(); mutex = null; } if (mutex != null) { if (new frmLogin().ShowDialog() == DialogResult.OK) { Application.Run(new MainForm()); } } else { MessageBox.Show("程序已经启动!!"); } } }
哥们,限制启动单个实例我知道怎么实现。。