private void OutputLog(string message) { if (IsDisposed) { return; } if (InvokeRequired) { Invoke(new Action <string>(OutputLog), message); return; } try { lock (RawOutput) { var threadId = GetThreadId(message); if (threadId.HasValue) { if (!Threads.Exists(n => n == threadId)) { Threads.Add(threadId.Value); AddLabel(threadId.ToString()); } } AddMessage(string.Format("{0}{1} -> {2}", Environment.NewLine, DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt"), message)); } } catch (ObjectDisposedException) { // Do Nothing } }