受此https://stackoverflow.com/a/5852926/291415的启发, 我做了一个FixedSizeQueue,当它达到配置的大小时会自行清空。它会在当时触发一个事件。
public new void Enqueue( T obj )
{
base.Enqueue( obj );
lock ( syncObject )
{
if ( base.Count > Size )
{
for ( int i = 0; i < Size; i++ )
{
T outObj;
base.TryDequeue( out outObj );
ItemsList.Add( outObj );
}
OnExportItems( new ExportEventArgs<T>( ItemsList ) );
ResetItemsList();
}
}
}
这很好用。
但是有一种情况是排队的项目数小于队列的大小。
在这种情况下我应该如何刷新队列? 每x毫秒检查一次队列并触发清空的计时器?