这是控制器的一部分(我处理的是ASP.net WebApi2 )。当控制器收到来自客户端的请求时,它会启动并激活一个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");
}
}
}
} 发布于 2015-07-24 00:08:24
只是一句忠告。在finally块中释放Mutex,而不是在catch中。这将确保您的Mutex将被释放,而不管是异常还是愉快的场景。
https://stackoverflow.com/questions/31592533
复制相似问题