public void ChatMessageServiceCompositionRoute(IChatMessageService chatMessageService, IRoutingService <string> routingService, ISkyWatch skyWatch) { ITack tackModifyChatMessageServiceA = _erector.Container.Resolve <ITack>(); tackModifyChatMessageServiceA.SkyWatch = skyWatch; chatMessageService.Tack = tackModifyChatMessageServiceA; }
private void OnRun(object state) { while (true) { ITack cmd = GetCmd(); if (cmd == null) { if (System.Threading.Interlocked.CompareExchange(ref mCounter, -1, 0) == 0) { mSemaphore.WaitOne(); } } else { try { cmd.Execute(); Console.WriteLine(cmd); } catch { } } } }
private ITack GetCmd() { ITack result = null; mQueue.TryDequeue(out result); if (result != null) { System.Threading.Interlocked.Decrement(ref mCounter); } return(result); }
/// <summary> /// 添加作业 /// </summary> /// <param name="cmd">作业</param> public void Add(ITack cmd) { if (System.Threading.Interlocked.CompareExchange(ref mCounter, 1, -1) == -1) { mSemaphore.Release(); } else { System.Threading.Interlocked.Increment(ref mCounter); } mQueue.Enqueue(cmd); }