public LockSellStonesOrder LockSellStone(string buyerUserName, string orderNumber) { lock (_lockListSellOrders) { StoneOrderRunnable runnable = null; if (dicSellOrders.TryGetValue(orderNumber, out runnable)) { if (runnable.OrderState != SellOrderState.Wait) { return(null); } if (runnable.SellOrder.SellerUserName == buyerUserName) { return(null); } return(runnable.Lock(buyerUserName)); } return(null); } }
public LockSellStonesOrder AutoMatchLockSellStone(string userName, int stoneCount) { lock (_lockListSellOrders) { StoneOrderRunnable runnable = null; foreach (var item in dicSellOrders.Values) { if (item.OrderState == SellOrderState.Wait && item.StoneCount <= stoneCount) { if (runnable == null) { runnable = item; } else { if (item.StoneCount > runnable.StoneCount) { runnable = item; } } if (runnable != null && runnable.StoneCount == stoneCount) { break; } } } if (runnable == null) { return(null); } return(runnable.Lock(userName)); } }