我正在处理一次只能处理1个命令的硬件资源。我将通过Web界面公开它的一些API函数,所以显然很有可能一次发送超过1个命令。我已经决定在提交这些命令时将这些命令排队是确保串行处理的最佳方法。
我打算在静态类中实现队列。 Web应用程序代码隐藏将通过调用与其所需命令相对应的方法来添加命令。我希望调用方法等到它获得其命令的输出,因此不需要异步魔法。
我这样做了吗?有更好的方法吗?
如何在C#中开始实现队列(我通常使用Java)?我假设我需要一些事件来表示已经添加了一个作业,还有一个处理程序来启动队列的处理......
我正在使用.NET Framework 4。
答案 0 :(得分:10)
您可以使用ConcurrentQueue
类进行实现,并拥有一个专用线程来处理队列中的项目。
对于等待部分,您可以使用AutoResetEvent
,生产者将事件实例与请求一起传递给单例类,然后调用阻塞的WaitOne()
,直到处理器通过调用完成信号处理完成为止Set()
。
答案 1 :(得分:6)
听起来像是一种好方法除了:使用Generic Queue collections class. 不要编写自己的方法!你将重新发明一个精心打造的车轮。