public override string ToString() { if (asString == null) { asString = TraceType.ShortString() + Created.ToString(" HH:mm:ss.fff ") + Message; } return(asString); }
private static void enqueueMessage(TraceTypeEnum traceType, string?filterText, ref string?threadMessageBuffer) { #if RealTimeTraceing RealTimeTracer.Trace("enqueueMessage(): start " + traceType.ShortString() + ": " + threadMessageBuffer); #endif TraceMessage message = new TraceMessage(traceType, threadMessageBuffer !, filterText); threadMessageBuffer = null; //break in debugger if needed if (Debugger.IsAttached) { if ((traceType == TraceTypeEnum.Warning && IsBreakOnWarning) || (traceType == TraceTypeEnum.Error && IsBreakOnError) || (traceType == TraceTypeEnum.Exception && IsBreakOnException)) { Debug.WriteLine(traceType + ": " + message); Debugger.Break(); } } #if RealTimeTraceing RealTimeTracer.Trace("enqueueMessage(): lock messagesQueue"); #endif lock (messagesQueue){ #if RealTimeTraceing RealTimeTracer.Trace("enqueueMessage(): locked messagesQueue"); #endif if (messagesQueue.Count >= MaxMessageQueue - 1) //leave 1 space empty for overflow error message { #if RealTimeTraceing RealTimeTracer.Trace("enqueueMessage(): messagesQueue overflow (" + messagesQueue.Count + " messages)"); #endif if (!isMessagesQueueOverflow) { isMessagesQueueOverflow = true; messagesQueue.Enqueue(new TraceMessage(TraceTypeEnum.Error, "Tracer.enqueueMessage(): MessagesQueue overflow (" + messagesQueue.Count + " messages) for:" + Environment.NewLine + message.ToString())); } } else { isMessagesQueueOverflow = false; messagesQueue.Enqueue(message); #if RealTimeTraceing RealTimeTracer.Trace("enqueueMessage(): message added to messagesQueue"); #endif } //Monitor.Pulse(messagesQueue); #if RealTimeTraceing RealTimeTracer.Trace("enqueueMessage(): messagesQueue pulsed, release lock"); #endif } #if RealTimeTraceing RealTimeTracer.Trace("enqueueMessage(): messagesQueue lock released, end"); #endif }