这不是关于我能够或应该以最佳方式利用队列的不同方法,而是我所看到的对我来说毫无意义的事情.
void Runner() {
// member variable
queue = Queue.Synchronized(new Queue());
while (true) {
if (0 < queue.Count) {
queue.Dequeue();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是在一个线程中运行的:
var t = new Thread(Runner);
t.IsBackground = true;
t.Start();
Run Code Online (Sandbox Code Playgroud)
其他事件是"排队"其他地方.我所见到的是在一段时间内,Dequeue实际上会抛出InvalidOperationException,队列为空.这应该是不可能看到计数如何保证那里有东西,我很肯定没有别的东西是"出列".
问题:
编辑(澄清):
这些代码片段是实现后台帮助程序线程的Wrapper类的一部分.此处的Dequeue是唯一的Dequeue,并且所有Enqueue/Dequeue都在Synchronized成员变量(队列)上.
我们正在使用VBScript作为主要语言来构建基于Classic ASP的Web应用程序.我们同意我们的后端(框架,如果你愿意)已过时,并没有为我们提供快速前进的适当工具.我们几乎已经接受了当前的webMVC模式,并且不能以合理的方式使用当前的技术来实现.缺失的大功能是适当的调度和继承模板等.
目前正在讨论两条路径:
这并不意味着我们的逻辑已经消失,因为我们多年来建立的逻辑相当稳定,正如所指出的那样难以处理.它建立在SQL Server 2005上,大量使用存储过程并在IIS 6上发布,只是为了更多的背景.
现在,问题.有没有人采取上述两条路径中的任何一条?如果是这样,它是否成功,它怎么可能更好,等等.我们不希望偏离做这两件事之一,但一些建议或其他解决方案可能会有所帮助.