我有一个业务逻辑方法,必须先完成才能再次调用.多个客户端可以立即调用它:
public void DoSomething() {}
Run Code Online (Sandbox Code Playgroud)
我正在考虑通过将方法设为私有来解决它,并创建一个新的公共方法来将请求放在队列中:
public void QueueSomeWork()
{
// put on a Queue object
// How will DoSomething get invoked now?
}
private void DoSomething() {}
Run Code Online (Sandbox Code Playgroud)
我试图以优雅的方式解决这个问题.我的问题是如何DoSomething()知道运行.我想过创建一个计时器来检查队列,但是它会全天候运行,因为每年可能发生两次.
另一个想法是,DoSomething()当它完成了其他人会订阅的东西,从队列中选择一些工作并打电话时触发事件DoSomething().有没有更好的办法?
Dan*_*inu 10
你为什么不用锁护器?
例如:
private static Object lockGuard = new Object();
public void DoSomething()
{
lock (lockGuard)
{
//logic gere
}
}
Run Code Online (Sandbox Code Playgroud)
锁定资源将阻止同时从多个线程进行访问.
更多关于锁定:http://msdn.microsoft.com/en-us/library/c5kehkcz(v = vs.110).aspx