private void ProcessQueue() { List<DebugMessage> messages = new List<DebugMessage>(64); DateTime last = DateTime.Now; try { while (!processThreadAbort) { DebugMessage message = null; lock (queue) { // check if queue has requests or too many have already been sent if (queue.Count <= 0 || sent.Count > MaxSentQueue) { Thread.Sleep(10); } else { message = queue.Dequeue(); } } if (message != null) { PrepareUnitTest(); message.CallBack = MessageCallBack; messages.Add(message); } DateTime now = DateTime.Now; if (messages.Count != 0) { if (messages.Count > 64 || now.Ticks - last.Ticks > 250000) { debugServerEngine.SendCommand2(messages); messages.Clear(); last = now; } } //Console.WriteLine((message.Other as UnitTestRequest).MethodTypeName + "." + (message.Other as UnitTestRequest).MethodName); } } catch (Exception e) { Console.WriteLine(e.ToString()); } }
private void ProcessQueue() { if (Aborted) { return; } var messages = new List <DebugMessage>(); StopWatch.Start(); Aborted = !StartEngine(); while (!Aborted) { lock (Queue) { if (Queue.Count == 0 && Pending.Count == 0) { LastResponse = (int)StopWatch.ElapsedMilliseconds; } if (Queue.Count > 0 || Pending.Count > 0) { CheckEngine(); } bool sendFlag = Queue.Count > 0 && Pending.Count < MaxSentQueue; if ((MaxSentQueue - Pending.Count < MinSend) && Queue.Count > MinSend) { sendFlag = false; } // check if queue has requests or too many have already been sent while ((SendOneCount < 0 && sendFlag && Pending.Count < MaxSentQueue && Queue.Count > 0) || (SendOneCount >= 0 && Queue.Count > 0 && Pending.Count == 0)) { var message = Queue.Dequeue(); message.CallBack = MessageCallBack; Pending.Add(message); messages.Add(message); //Console.WriteLine("Sent: " + (message.Other as UnitTest).FullMethodName); if (SendOneCount >= 0) { --SendOneCount; } } if (messages.Count > 0) { //Console.WriteLine("Batch Sent: " + messages.Count.ToString()); DebugServerEngine.SendCommand2(messages); messages.Clear(); } } Thread.Sleep(10); } }