当前位置:  开发笔记 > 编程语言 > 正文

AbandonedMutexException:由于放弃了互斥锁而导致等待完成

如何解决《AbandonedMutexException:由于放弃了互斥锁而导致等待完成》经验,为你挑选了1个好方法。

为什么以下结构会导致AbandonedMutexException.即使有错误或方法返回.互斥体正在被释放.

static Mutex WriteMutex = new Mutex(false, @"Global\mutex2203");

public static void Demo()
{

    try
    {
        WriteMutex.WaitOne();

        //rest of coding stuff here
    }
    finally
    {
            WriteMutex.ReleaseMutex();
    }

}

接收报告无法重新生成错误.

编辑:WriteMutex.WaitOne();没有其他代码发生异常.只有这种方法才能触及互斥锁.



1> Ken Clement..:

一个AbandonedMutexException当一个线程获取被抛出Mutex另一个线程已经通过不释放(参见离开废弃对象AbandonedMutexException).您在问题中引用的代码不一定是导致异常的代码,只是"接收"它(即检测抛出异常的情况).

也就是说,另一个线程中的代码(可能是相同的方法但可能不是)获取Mutex但不释放它并允许其线程退出而Mutex不会被释放.然后运行上面显示的代码的线程在尝试获取时抛出异常Mutex.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有