社区
C#
帖子详情
判断MessageQueue是否有数据
jone_fox
2007-03-05 03:53:39
请问如何判断MessageQueue队列中是否有数据
BeginReceive ,BeginPeek ,Receive都不能判断出.
...全文
435
16
打赏
收藏
判断MessageQueue是否有数据
请问如何判断MessageQueue队列中是否有数据 BeginReceive ,BeginPeek ,Receive都不能判断出.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jone_fox
2007-03-06
打赏
举报
回复
目前我对MessageQueue的了解,好象没有办法知道MSMQ中没有消息.
不知各位有什么意见?
jone_fox
2007-03-06
打赏
举报
回复
判断MSMQ中有没有数据的目的是:当发现MSMQ中没有消息,就结束此线程.
苏陌Bubble
2007-03-06
打赏
举报
回复
.......
jone_fox
2007-03-06
打赏
举报
回复
如果 "重开一个线程,Peek阻塞该线程",好到达BeginReceive发现MSMQ没有数据继续阻塞,
此时再"重开一个线程,Peek阻塞该线程"(现在已经有2个线程阻塞)如此重复阻塞的线程将越来
越多,RAM将越来越大(但是我们什么都没有做,只是打开了程式).
lxsfg
2007-03-06
打赏
举报
回复
不明白lz要干什么,判断MSMQ中有没有数据干什么?有就处理,没有就不处理?这样岂不是脱裤子放屁?不明白
苏陌Bubble
2007-03-06
打赏
举报
回复
老兄,阻塞的话,自己变通一下就行了呀。。
重开一个线程,Peek阻塞该线程,
完成时引发PeekCompleted ,捕获后通知主线程
最好是主线程有一个类实现一个你自己的接口
IPeekNotify
{
onPeekReturn(..);
}
,完成后直接通过接口通知。。具体的处理在主线程的onPeekReturn中完成即可。
个人意见,如有不妥,请大家指教
jone_fox
2007-03-06
打赏
举报
回复
MSDN上这样说:"BeginPeek 用在异步处理中,$$$===当队列中有可用消息时===$$$,用来引发 PeekCompleted 事件。"
BeginPeek "启动一个没有超时设定的异步查看操作。直到队列中出现消息时,才完成此操作。"
-----如果没有消息BeginPeek是一直阻塞的.
期待正解....
pele007
2007-03-06
打赏
举报
回复
正巧刚写过MSMQ的包.用peekcompleted事件+beginpeek方法
jone_fox
2007-03-06
打赏
举报
回复
有没有高人,帮帮我.
谢谢了!
jone_fox
2007-03-06
打赏
举报
回复
目前我的解决方案
try
{
EndReceive();
}
catch
{ retrun;}
有人有更好的方法,分享吗?
jone_fox
2007-03-05
打赏
举报
回复
期待正解....
jone_fox
2007-03-05
打赏
举报
回复
Peek是应用程序可能无限期的(如果没有消息).
苏陌Bubble
2007-03-05
打赏
举报
回复
MessageQueue.Peek()方法,返回但不删除队列中的一条记录,如果为Null,即说明队列为空,反之说明有数据,可以调用Receive方法获取。大概如下:
while( youQueue.Peek() != null)
{
msgTmp = youQueue.Receive();
......
......
}
best8625
2007-03-05
打赏
举报
回复
友情UP
苏陌Bubble
2007-03-05
打赏
举报
回复
peek
jone_fox
2007-03-05
打赏
举报
回复
没人知道吗?
安卓 Handler面试(2):
Message
Queue
的设计原理
Message
Queue
的设计原理(重要、重要、重要) 1、
Message
Queue
使用的
数据
结构? 使用了单链表的
数据
结构来实现的,
message
可看做链表的节点,
Message
的next成员来指向下条消息。
Message
Queue
涉及到两个重要的操作消息入队en
queue
Message
、出队next。 2、正常来说队列的
数据
先进先出,既然使用了队列这种
数据
结构,那么他是如何保证延迟消息插入队列后 ,后续立即执行的消息插入后在他之前的执行的?读源码 ^- ^
Message
Queue
#en
queue
Me
Android 中
Message
,
Message
Queue
,Looper,Handler详解+实例
一、几个关键概念 1、
Message
Queue
:是一种
数据
结构,见名知义,就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个
Message
Queue
数据
结构。 创建一个线程的时候,并不会自动创建其
Message
Queue
。通常使用一个Looper对象对该线程的
Message
Queue
进行管理。主线程创建时,会创建一 个默认的Looper对象,而Looper对象的创建,将自
Message
Queue
&
Message
Pool—消息的读写、删除和回收
1、
Message
Queue
的
数据
结构 翻译为消息队列,但实际的
数据
结构是单向链表结构,下文中仍以消息队列称之;
Message
中有个重要的属性
Message
next;next指向另外一个
Message
。在
Message
Queue
中
Message
A的next指向B,B的next指向C;这样 A B C就组成了单向链表结构,它们是以时间排序的,其中A为header,表示最先要处理的消息,C是
java
message
queue
_Android 消息机制之
Message
Queue
深入源码分析 [ 五 ]
上一章学习了消息机制中的
Message
与
Message
的消息对象池. 本章继续学习消息机制中
Message
Queue
消息队列的相关概念.尽管
Message
Queue
叫消息队列, 但是它的内部实现却并不是用的队列, 实际上它是通过一个单链表的
数据
结果来维护消息列表. (单链表在插入与删除上很有优势)
Message
Queue
主要包括两个操作, 插入和读取. 但是读取操作本身会伴随着删...
【
数据
结构】线性表 ③ ( 链表示例 | Android
Message
Queue
源码分析 | en
queue
Message
添加消息 | next 取出消息 )
一、Android
Message
Queue
源码分析 1、
Message
消息 2、
Message
Queue
消息队列 en
queue
Message
添加消息 3、
Message
Queue
消息队列 next 取出消息
C#
110,534
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章