releasemutex_catch releasemutex_mutex线程同步

电脑杂谈  发布时间:2017-01-01 21:03:18  来源:网络整理

Mutexm=newMutex(true,mutextName);

这里必须改为

C#code

Mutexm=newMutex(false,mutextName);

你是2个不同应用程序域之间同步,因此这里不能指定为true。releasemutex详细解释请看MSDN。

谢谢。你给的代码没有错。

但是原因不是这样。

后来找了资料,我的理解是这样:

Mutex支持递归获取。

第一次运行程序

执行:Mutexm=newMutex(true,mutextName);

主调线程获取了一次锁。releasemutex

调用WaitOne又获取了一次锁。

所以需要调用ReleaseMutex两次。

第二次运行:

mutex线程同步_catch releasemutex_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);

releasemutex_catch releasemutex_mutex线程同步

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]


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-24253-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 世祖赫连勃勃
        世祖赫连勃勃

        康师傅有小鬼子股份

      • 赵猛
        赵猛

        中东是怎么乱的

      • 古伊娜
        古伊娜

        有本事一楼不用天猫京东

      热点图片
      拼命载入中...