public Task ConnectLogger(RichTextBox box)
{
return Task.Factory.StartNew(() =>
{
while (!_source.Token.IsCancellationRequested)
{
string result;
var builder = new StringBuilder();
while (_log.TryDequeue(out result))
{
builder.AppendLine(result);
}
if (builder.Length > 0)
{
box.Invoke(new Action(() =>
{
box.AppendText(builder.ToString());
box.ScrollToCaret();
}));
}
_source.Token.WaitHandle.WaitOne(TimeSpan.FromMilliseconds(250));
}
}, _source.Token);
}