Пример #1
0
        public void ChatMessageServiceCompositionRoute(IChatMessageService chatMessageService, IRoutingService <string> routingService, ISkyWatch skyWatch)
        {
            ITack tackModifyChatMessageServiceA = _erector.Container.Resolve <ITack>();

            tackModifyChatMessageServiceA.SkyWatch = skyWatch;
            chatMessageService.Tack = tackModifyChatMessageServiceA;
        }
Пример #2
0
 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
             {
             }
         }
     }
 }
Пример #3
0
        private ITack GetCmd()
        {
            ITack result = null;

            mQueue.TryDequeue(out result);
            if (result != null)
            {
                System.Threading.Interlocked.Decrement(ref mCounter);
            }
            return(result);
        }
Пример #4
0
 /// <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);
 }
Пример #5
0
        /// <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);

        }