【C# 编程中的堆栈(Stack)和队列(Queue)】教程文章相关的互联网学习教程文章

c# – 如何等待工作人员清空阻塞队列【代码】

我正在使用具有阻塞队列的单个生产者 – 单一消费者模型.我希望生产者在生产完成后,等待队列在返回之前清空. 我实施了由Marc Gravell建议的BlockingQueue here. 在我的模型中,生产者(渲染器)正在使用事件来通知工作者(打印机)何时正在呈现文件(工作人员对项目进行排队)以及何时呈现(完成)每个文件. 现在,当渲染器完成时,方法结束并且工作人员被杀死,因此我最终得到了10-15个尚未打印的渲染文件. 我希望已完成的事件处理程序阻塞,直...

如何在C#中为ActiveMQ队列创建队列浏览器(预览不消耗)?

我正在使用NMS API在C#中读/写ActiveMQ,我找不到预览队列中消息的方法.我可以阅读和回滚 – 但这最终将使他们成为DLQ. 在我以前的生活中,TIBCO有一个可以使用的QueueBrowser对象,我认为JMS也有IQueueBrowser.我找不到ActiveMQ .NET等价物.解决方法:不幸的是,NMS没有支持(至少现在还没有)来自Java的JMS中可用的QueueBrowser API.看看ActiveMQ.NET问题跟踪器数据库中的Issue AMQNET-97 – 该团队正在寻找贡献者来实现此功能. 顺便说...

使用c#将消息发送到另一台计算机msmq的公共队列【代码】

如何将消息发送到c#中另一台计算机msmq的公共队列?解决方法:您使用这样的队列名称:FormatName:DIRECT=OS:machine\queue其中machine是计算机的名称,queue是队列的名称.请注意,这将绕过MSMQ通常执行的所有Active Directory路由和内容.根据您的要求,可能会也可能不会.

c# – MSMQ:如何在远程计算机上创建专用队列

我需要在远程计算机上创建一个私人消息队列.我所有的研究表明,通过System.Messaging对象无法做到这一点.任何人都可以确认/否认这一点.我的另一个选择是在远程主机上创建一个附加服务,该服务侦听创建队列的请求,然后在本地创建它们. 任何更好/更简单的想法都会受到欢迎.解决方法:你不能,也不应该. MSMQ就像一个邮箱,你只需创建一个收件箱,发件箱就是由MSMQ本身创建的. 实际上,只需创建一个sperate服务,通过安装localy来在远程计算机...

c# – 消息队列循环【代码】

我在c#中有一个控制台应用程序,我正在尝试从消息队列接收消息,直到消息队列为空.所以,像,MessageQueue queue = new MessageQueue(); While(queue.notempty) {queue.receive(...) }我怎样才能做到这一点? 谢谢.解决方法:无法检查队列是否为空.你必须这样收到它:private Message Receive(MessageQueue queue) {try {return queue.Receive(TimeSpan.Zero);}catch (MessageQueueException mqe){if (mqe.MessageQueueErrorCode == Mes...

c# – 如何/为什么SyncRoot隐藏在队列中?【代码】

困惑,可能会遗漏一些简单的东西.. 我有var q = new Queue<object>(); lock (q.SyncRoot) {... }我明白了Queue<T> does not provide a defintion for SyncRoot blah blah...但是,队列< T>实现ICollection,将SyncRoot定义为公共属性. 所以,首先,为什么这是隐藏的.其次,如何隐藏正在实现的接口的属性?解决方法:您可以在implementing it explicitly之前隐藏该物业:object MyQueue.SyncRoot { get; set; }它是隐藏的because it’s dep...

如何将Parallel.ForEach的结果发布到在C#中不断读取的队列中【代码】

在我的应用程序中,我有三个类,Extractor,Transformer和Loader,由第四类协调员协调.提取器,变压器和装载机非常简单,并执行以下操作: 抽出器 公开一个名为Results of IEnumerable< string>的成员,例如通过从文本文件中读取.提取应该是同步的. 变压器 公开一个名为Transform的成员,它接受一个字符串并通过某个过程将其转换为另一个字符串,这个过程预计很费时(在这里使用并行处理). 装载机 公开一个名为Load的成员,它接受一个字符串并...

c# – 使用.Net HttpListener时更改HTTP.sys内核队列限制?【代码】

我有一个应用程序,它使用.Net 4.0中的HttpListener类来为http请求提供服务. 在负载下我注意到我在日志中报告了503 – QueueFull – 错误.搜索此错误表示当超过http.sys将排队的最大请求数时会发生此错误. 默认队列长度为1000.如果您使用的是IIS,则可以通过应用程序池上的“高级设置”中的“队列长度”参数进行调整. 如果你不使用IIS有什么方法可以调整这个值?或者这个参数的控件是隐藏在HttpListener类中的,而不是暴露给开发人...

c# – 队列线程安全:一位作家,一位读者

我有一个队列< T> _q = new Queue< T>(); 总是只有一个线程填充它:_q.Enqueue(msg); 总有一个线程消耗它:_q.Dequeue(); 我想在两个线程中都是无锁的.性能很重要,但安全性是首要的. 我是否需要将_q作为ConcurrentQueue< T>? UPD这可能很重要:在编写线程后,我不需要确定读取线程是否会立即成功地使项目出列.如果将采取一些虚假的出局 – 那没关系.解决方法:Do I need making _q a ConcurrentQueue是.队列不是线程安全的.

C#中的循环队列【代码】

public List<Transfer> Queue{get { return _queue; }set { _queue = value; }}TransferFromQueue(){// Do stuff// Remove transfered item from Queue}我的队列是一个变量,项目将一直添加和删除. 我正在寻找一种方法,只要列表中有项目,就可以执行TransferFromQueue().虽然它永远不应该运行TransferFromQueue()的一个以上. 当队列中有项目时,如何逐个循环此队列?解决方法:你为什么不用Queue<Transfer>呢?这似乎正是你想要的.priv...

c# – 无法以编程方式查看远程(私有)msmq:拒绝访问消息队列系统【代码】

我有一个非常简单的控制台应用程序,无法查看远程专用队列中的消息.var queues = MessageQueue.GetPrivateQueuesByMachine(machineName); var queue = queues.Where(x=>x.FormatName == queueName).Single(); Message message = queue.Peek();Peek调用失败,MessageQueueException为“拒绝访问消息队列系统”. 使用相同的客户端计算机和用户,我可以使用队列资源管理器和消息队列管理单元查看队列. 尝试使用本地队列我只能通过取消队列...

c# – 用于写入队列的Azure函数 – 我可以设置元数据吗?【代码】

我可以从this page看到,当它们被用作触发器时,您可以简单地访问队列消息元数据属性,但我想做相反的事情.我有一个Azure函数,它将消息写入队列,但它当前具有默认的到期时间,我想设置一个更短的过期时间,因此它们只在队列中存在很短的时间. 有没有办法从Azure函数将消息写入队列以设置过期时间? 谢谢 编辑1:一个警告是我提前不知道队列的名称.这是传入消息的一部分,因此将queuename设置为输出绑定的参数我按照@Mikhail的建议做了改动...

c# – 队列问题【代码】

在我们的应用程序中,我们有一个Queue,定义如下:private static Queue RawQ = new Queue();然后将两种不同类型的对象放在Queue上,一种是来自类的对象(A类),另一种是来自struct(struct B)的对象. 当我们处理来自Queue的数据时,我们使用typeof来检查Queue中属于哪种类型的项(A类或结构B). 我的问题: >对于来自A类的对象,只有它们的引用被复制到Queue,而对于struct B中的对象,它们的值被复制到Queue,对吗?>对于一个队列,一些项目是小...

C# 消息队列【代码】【图】

阅读目录 1. 消息队列是什么? 2. 常见的消息队列框架有哪些? 3. MSMQ介绍 4. RabbitMQ介绍 消息队列是什么简单的理解就是将消息添加一个队列中,使用时在从这个队列中取出来。那么消息什么?队列又是什么呢?   消息:说白了就是交互的内容,可以是文字、图片、视频等等。   队列:一种先进先出的存储格式。 消息队列提供保证消息传递,高效的路由、安全和基于优先级的消息。它可以用来实现需要高性能的异步和同步场景的解...

C# – 移动文件 – 到队列或多线程

我有一个应用程序,使用Flex前端和.NET Web服务将项目及其文件从预览移动到生产.目前,该过程大约需要每个项目5-10分钟.除了延迟问题,它真的不应该花那么长时间.我想知道这是否是一个很好的多线程用例.此外,考虑到用户可能想要一个接一个地推送多个项目,有没有办法排队作业. 任何建议和例子都非常感谢. 谢谢!解决方法:执行大量磁盘IO的东西通常不适合多线程,因为磁盘一次只能做一件事.但是,如果您要推送多台服务器或服务器具有特别好...

STACK - 相关标签