为什么互斥对象实例能让控制器正常工作?
本文关键字:常工作 工作 控制器 对象 实例 为什么 | 更新日期: 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");
}
}
}
}
给你一个忠告。Mutex
在finally
块释放,不在catch
块释放。这将确保您的Mutex
将被释放,无论异常或愉快的场景。