Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        public void Write(string value)
        {
            var item = new AsyncTextWriterListItem(DefaultFormatter.Instance, value);

            Write(item);
        }
Ejemplo n.º 4
0
        public void Write(IFormatter formatter, params object[] args)
        {
            var item = new AsyncTextWriterListItem(formatter, args);

            Write(item);
        }