You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.5 KiB
63 lines
1.5 KiB
using Apewer;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Threading;
|
|
|
|
namespace Apewer.Internals
|
|
{
|
|
|
|
internal sealed class LogProvider
|
|
{
|
|
|
|
private static bool _running = false;
|
|
private static Thread _thread = null;
|
|
private static Queue<LogItem> _queue = new Queue<LogItem>();
|
|
|
|
private static void Listener()
|
|
{
|
|
while (_running)
|
|
{
|
|
var item = (LogItem)null;
|
|
lock (_queue)
|
|
{
|
|
if (_queue.Count > 0) item = _queue.Dequeue();
|
|
else
|
|
{
|
|
_running = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (item == null) continue;
|
|
if (item.Logger == null) continue;
|
|
try
|
|
{
|
|
// item.Logger.Raise(item);
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
|
|
public static void Queue(LogItem argItem)
|
|
{
|
|
if (argItem == null) return;
|
|
lock (_queue)
|
|
{
|
|
_queue.Enqueue(argItem);
|
|
if (_thread == null)
|
|
{
|
|
_thread = new Thread(Listener);
|
|
_thread.IsBackground = false;
|
|
}
|
|
if (!_running)
|
|
{
|
|
_running = true;
|
|
_thread.Start();
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|