Example #1
0
 public EventDispatcher( IGrandOutputDispatcherStrategy strategy, Action<TimeSpan> onIdle = null )
 {
     Debug.Assert( strategy != null );
     _queue = new ConcurrentQueue<EventItem>();
     _dispatchLock = new object();
     _strat = strategy;
     _onIdle = onIdle;
     _overloadLock = new object();
     _thread = new Thread( Run );
     _thread.IsBackground = true;
     _strat.Initialize( () => _nonBlockingCount, _thread, out _idleManager );
     _thread.Start();
 }