首页 > 编程知识 正文

对象不支持appendmenu属性或方法(必须问男朋友的问题)

时间:2023-05-04 10:25:55 阅读:66018 作者:3288

Mutex对象等待互斥对象的方式有Mutex.WaitAll、WaitOne和Mutex.WaitAny

使用Mutex对象时,会发生以下异常:

异常一.由于出现放弃的mutex,等待进程结束

原因:获取独占对象后,在未显式释放相应的独占对象的情况下退出了相应的线程

解决方法:每次调用等待方法时,调用结束时调用ReleaseMutex ) )方法以释放Mutex对象。 各自的释放方法也略有不同。 例如:

(1)、等待一次) )

Mutex gM1=new Mutex (;

gM1.WaitOne (; 等待//GM1发布

gM1的释放如下

gM1.ReleaseMutex (;

(2)、等待全部) )

Mutex[] gMs=new Mutex[2];

gMs[0]=gM1;

gMs[1]=gM2;

mutex.waitall(GMS;//等待GM1和gM2释放

for(intI=0; i gMs.Length; I )

{

gMs[0].ReleaseMutex (;

}

(3)、等待为) )。

Mutex[] gMs=new Mutex[2];

gMs[0]=gM1;

gMs[1]=gM2;

intindex=mutex.waitany(GMS; //等待释放数组中的任意Mutex对象

gMs[index].ReleaseMutex (;

异常2、从异步代码块中调用了对象同步方法。

此问题是因为调用WaitAny ()方法后调用了多个发行对象。 例如:

Mutex[] gMs=new Mutex[2];

gMs[0]=gM1;

gMs[1]=gM2;

mutex.Waitany(GMS;

gM1.ReleaseMutex (;

gm2 .发行矩阵(;

正确的写法如下。

Mutex[] gMs=new Mutex[2];

gMs[0]=gM1;

gMs[1]=gM2;

intindex=mutex.waitany(GMS; //等待释放数组中的任意Mutex对象

gMs[index].ReleaseMutex (;

总结:调用Mutex对象的等待和释放方法是成对的,调用哪个释放哪个?

写得有点庸俗,请原谅

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。