private void Write(AsyncTextWriterListItem item) { lock (_list) _list.Add(item); const int timeout = 10000; // 10 seconds lock (_syncObject) { if (_registeredWaitHandle == null) { // log.Write("ThreadPool.RegisterWaitForSingleObject",LogLevel.Trace); _registeredWaitHandle = ThreadPool.RegisterWaitForSingleObject(_waitHandle, Callback, null, timeout, false); } } }
private void Flush() { var sb = new StringBuilder(); while (_list.Count > 0) { AsyncTextWriterListItem[] items; lock (_list) { var count = _list.Count; items = new AsyncTextWriterListItem[count]; _list.CopyTo(items); _list.Clear(); } for (var i = 0; i < items.Length; ++i) { items[i].AppendTo(sb); } } _textWriter.Write(sb); _textWriter.Flush(); }
public void Write(string value) { var item = new AsyncTextWriterListItem(DefaultFormatter.Instance, value); Write(item); }
public void Write(IFormatter formatter, params object[] args) { var item = new AsyncTextWriterListItem(formatter, args); Write(item); }