这是控制器的一部分(我处理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");
}
}
}
}
答案 0 :(得分:0)
只是一句忠告。在Mutex
块中发布finally
,而不是catch
。这将确保您的Mutex
将被释放,无论例外或情况如何。