C# · 12月 31, 2021

c# – 如何将一个项目添加到队列的前面?

我正在创建一个 Windows服务,利用FileSystemWatcher来监视特定的文件夹以添加特定的文件类型.由于创建的事件与文件实际准备好被操纵之间的差距,我创建了一个队列< T>保存需要处理的文件名.在创建的事件处理程序中,该项目将添加到队列中.然后使用定时器,我定期从队列中获取第一个项目并处理它.如果处理失败,则将该项目添加回队列,以便该服务稍后可以重试处理.

这工作正常,但我发现它有一个副作用:新项目的第一个处理尝试不会发生,直到所有旧的重试项目已被重试.由于可能的队列可能包含很多项目,我想强制新的项目到队列的前面,以便先处理它们.但是从Queue<T> documentation起,没有明显的方法将项目添加到队列的前端.

我想我可以为新项目创建一个第二个队列,并且优先处理一个队列,但是有一个队列似乎更简单.

那么有一个简单的方法来添加一个项目到队列的前面?

解决方法 看起来像你想要一个 LinkedList<T>,它允许你做的事情,如AddFirst(),AddLast(),RemoveFirst()和RemoveLast().