winform中如何控制一个窗体在同一时间只能运行一个?强调:不是调用子窗体

解决方案 »

  1.   

    用互斥体Mutex类,MSDN上查一下Mutex的用法就行了
      

  2.   

    互斥锁(Mutex)互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。互斥锁可适用于一个共享资源每次只能被一个线程访问的情况 函数://创建一个处于未获取状态的互斥锁Public Mutex();//如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态 Public Mutex(bool owned); 如果要获取一个互斥锁。应调用互斥锁上的WaitOne()方法,该方法继承于Thread.WaitHandle类它处于等到状态直至所调用互斥锁可以被获取,因此该方法将组织住主调线程直到指定的互斥锁可用,如果不需要拥有互斥锁,用ReleaseMutex方法释放,从而使互斥锁可以被另外一个线程所获取。
      

  3.   

    在你的程序的Program.cs文件中,参考如下代码修改一下: bool   bCreateNew; 
    Mutex   oMutex   =   new   Mutex(true,   "你的程序名 ",   out   bCreateNew); 
    if   (bCreateNew) 

    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new   YourForm()); 

    else 

    MessageBox.Show( "本程序已经运行并只允许运行一次! ",   "你的程序名 ",   MessageBoxButtons.OK,   MessageBoxIcon.Information);