为什么Mutex实例让控制器正常工作?

时间:2015-07-23 16:01:43

标签: c# asp.net controller mutex

这是控制器的一部分(我处理ASP.net Web Api 2)。当控制器从客户端收到请求时,它启动并激活Mutex实例。在catch块中我释放互斥锁实例(ReleaseMutex方法),但是在try块中我忘记了这个技巧并且它有效,它的执行方式与之前发布的一样吗? 为什么?

namespace HMMM
{
    public class MYSTERYController : ApiController
    {
        public Mutex Mutec = new Mutex();
        public JObject MYSTERY([FromBody] string  SomeStuff)
        {
            Mutec.WaitOne();//attention
            try
            {
                //blablabla 
                //not released Mutex                  
                return Error.json("TheSameBlaBlaBla");
            }
            catch (Exception e)
            {
                Mutec.ReleaseMutex();//Attention
                return Error.json("SomeCoolError");
            }
        }

    }

} 

1 个答案:

答案 0 :(得分:0)

只是一句忠告。在Mutex块中发布finally,而不是catch。这将确保您的Mutex将被释放,无论例外或情况如何。