控制器的方法为 OnlyOneCallPerUser
如果之前未完成,用户如何锁定执行方法?
public class SomeController : ApiController
{
public object OnlyOneCallPerUser()
{
//CALL START
var userId = this.User;
//WAIT BEFORE PREVIOUS CALL ENDED FOR userId
... some code
return true; //CALL END
}
}
我尝试使用命名信号量
Semaphore sem = new Semaphore(1, 1, USERID);
sem.WaitOne();
... some code
sem.Release();
但有些时候都挂在 sem.WaitOne()
我认为没有运行 sem.Release()
尝试 - 捕获 - 最后使用
我可以用这个逻辑吗?