Mutexm=newMutex(true,mutextName);
这里必须改为
C#code
Mutexm=newMutex(false,mutextName);
你是2个不同应用程序域之间同步,因此这里不能指定为true。releasemutex详细解释请看MSDN。
谢谢。你给的代码没有错。
但是原因不是这样。
后来找了资料,我的理解是这样:
Mutex支持递归获取。
第一次运行程序
执行:Mutexm=newMutex(true,mutextName);
主调线程获取了一次锁。releasemutex
调用WaitOne又获取了一次锁。
所以需要调用ReleaseMutex两次。
第二次运行:

调用:Mutexm=newMutex(true,mutextName);
因为Mutex的内核对象已经存在,没有获取锁。
调用WaitOne获取了锁。
[code=C#]
///<summary>
///Themainentrypointfortheapplication.
///</summary>
[STAThread]
staticvoidMain()
{
try
{
conststringmutextName="wwhhhwlllllll77777777ll9999llllw";
Mutexm=newMutex(true,mutextName);
boolb=m.WaitOne(TimeSpan.Zero,true);

MessageBox.Show(b.ToString());//True
m.ReleaseMutex();
m.ReleaseMutex();
MutexmNew=newMutex(true,mutextName);
boolbNew=mNew.WaitOne(TimeSpan.Zero,true);
MessageBox.Show(bNew.ToString());//True
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(newForm1());
}
catch(Exceptione)
{
MessageBox.Show(e.Message);
}
}
[Code]
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-24253-1.html
马大哈又开始扯淡了
然后是回扣
美国还没有把最新的伯克级派过来