NiboOl的天空
C#随笔

我曾经用过Mutex的方法来实现窗体的互斥运行。。但是会出现失效混乱的情况,令我苦恼不已。

Mutex的方法如下:

using System.Threading;    bool Create;  

Mutex m =new Mutex( false, "name", out Create );

if( Create ) Application.Run(new FormName());

我想出了这样一个办法:

1.在主窗体MainFrm的定义静态的bool boolFrmName变量,用于存储窗体的运行状态

2.在需要启动的窗体FormName中也要创建静态Form变量,

public static Form thisForm = new Form();

并在该窗体的Load事件中给thisForm变量赋值 thisForm=this;

2.在解决方案中添加一个类Judge,将类改成static类型,在类中添加如下方法:

public static void RunForm(string FormName)

{

switch(FormName)

case"RunFormName": MainFrm.boolFrmName=true; break;

case"CloseFromName":MainFrm.boolFrmName=false;break;

default: break;

}

3.在启动时先检测窗体是否被运行,如果窗体已经运行则激活该窗体

if(boolFrm==false) FormName newForm = new FormName(); newForm.Show(); Judeg.RunForm("RunFormName");

else FormName.thisForm.Activate();

posted on 2007-06-19 09:44  王鲁彬  阅读(2571)  评论(1)    收藏  举报