コード例 #1
0
        public void Add(object item)
        {
            List <object> buf;

            lock (_buffer)
            {
                _buffer.Add(item);
                buf = _buffer;
                if (_buffer.Count == _maxObjectsCount)
                {
                    Task.Run(() => _onFlush(buf));
                    _buffer.Clear();
                }
            }
            OnObjectCountChange?.Invoke(this, _buffer.Count);
        }
コード例 #2
0
 private void TimerWork(object state)
 {
     while (_timerOn && !_disposed)
     {
         Thread.Sleep(_timeSpan);
         List <object> buf;
         lock (_buffer)
         {
             buf = _buffer;
             Task.Run(() => _onFlush(buf));
             _buffer.Clear();
         }
         if (!_disposed)
         {
             OnObjectCountChange?.Invoke(this, _buffer.Count);
         }
     }
 }