gpt4 book ai didi

c# - BlockingCollection 或 Queue 用于作业?

转载 作者:太空狗 更新时间:2023-10-29 17:40:47 25 4
gpt4 key购买 nike

我正在开发一个 Windows 窗体应用程序 (c#),当程序运行时,它会创建对象并将它们添加到列表中。我必须使用 FIFO(先进先出)处理列表中的项目。我想在后台线程中执行此操作,我必须按顺序处理它们,编号 1、编号 2、编号 3 等等。一旦一个项目被添加到列表中,我就想处理它。所以我必须有一些东西来检查那个列表。

实现此目标的最佳方法是什么?

我知道 blockingcollection 做类似的事情,它在处理之前等待添加项目。

我可以将单个线程与队列一起使用,并且只是 while(true) 并获取项目(如果有的话)?

你怎么看?

最佳答案

听起来你应该去 BlockingCollection<T> 如果您打算使用后台线程。你可以很容易地做同样的事情 while(true)您正在寻找的逻辑。

BlockingCollection<T>给你两个重要的特征

  1. 它是线程安全的

  2. 当您调用 Take() ,它会为你阻塞(即等待队列中的东西),所以你不必用 ManualResetEvents 编写任何代码等等,这是一个很好的简化。

关于c# - BlockingCollection 或 Queue<T> 用于作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7161104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com