为什么互斥对象实例能让控制器正常工作?

本文关键字:常工作 工作 控制器 对象 实例 为什么 | 更新日期: 2023-09-27 18:04:12

这是控制器的一部分(我处理ASP.net Web Api 2)。当控制器接收到来自客户端的请求时,它启动并激活一个互斥对象实例。在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");
            }
        }
    }
} 

为什么互斥对象实例能让控制器正常工作?

给你一个忠告。Mutexfinally块释放,不在catch块释放。这将确保您的Mutex将被释放,无论异常或愉快的场景。