由于出现被放弃的mutex,等待过程结束

tiandaoliwen1 2012-05-27 02:54:41

下面程序运行过程中出现了个问题,请大家帮忙解决下!
static void Main(string[] args)
{
Program p = new Program();
p.RunThread();
Console.ReadLine();
}
public Program()
{
mutex = new Mutex();
thread1 = new Thread(new ThreadStart(thread1Func));
thread2 = new Thread(new ThreadStart(thread2Func));
}
public void RunThread()
{
thread1.Start();
thread2.Start();
}

private void thread1Func()
{
for (int count = 0; count < 3; count++)
{
mutex.WaitOne();
TestFunc("Thread1 have run " + count.ToString() + " times");

}

mutex.ReleaseMutex();
}
private void thread2Func()
{
for (int count = 0; count < 10; count++)
{
//下面waitone出出现“由于出现被放弃的mutex,等待过程结束”异常,我明明调用了mutex.ReleaseMutex()啊!
mutex.WaitOne();
TestFunc("Thread2 have run " + count.ToString() + " times");
mutex.ReleaseMutex();
}
}
...全文
495 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiandaoliwen1 2012-05-28
  • 打赏
  • 举报
回复
也就是说,mutex.WaitOne()执行了多少次,就得释放多少次对吧
qldsrx 2012-05-27
  • 打赏
  • 举报
回复
你再仔细看看你的thread1Func函数,循环了3次,mutex.WaitOne();执行了3次,但是都没释放,循环结束后才执行一次mutex.ReleaseMutex();

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧