如题,作一个完善的程序,这个是必不可少的,除非非得这样做.
先讲实现方法:
首先依然是命名空间:
    using System.Threading;
然后修改
static void Main()
  {
   bool bCreatedNew;

   Mutex ltt =new Mutex( false, "myUniqueName", out bCreatedNew );

   if( bCreatedNew )

        Application.Run(new Form1());
  }
接下来,说一下原理:
当两个或更多线程需要同时访问一个共享资源时,系统需要使用同步机制来确保一次只有一个线程使用该资源。Mutex 是同步基元,它只向一个线程授予对共享资源的独占访问权。如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。
相信如果学过操作系统的朋友一定能够看的懂.
可以使用 WaitHandle.WaitOne 请求互斥体的所属权。拥有互斥体的线程可以在对 Wait 的重复调用中请求相同的互斥体而不会阻塞其执行。但线程必须调用 ReleaseMutex 方法同样多的次数以释放互斥体的所属权。如果线程在拥有互斥体期间正常终止,则互斥体状态设置为终止,并且下一个等待线程获得所属权。如果没有线程拥有互斥体,则互斥体状态为终止。

Posted on 2006-06-01 15:06  李通通  阅读(347)  评论(0编辑  收藏  举报