苏飞论坛

标题: 窗体上通过MessageQueue 传值 [打印本页]

作者: youzi    时间: 2013-5-22 21:27
标题: 窗体上通过MessageQueue 传值
这里简单介绍一下如何使用win7自带的消息队列的使用
首先,要到控制面板-程序-程序和功能-已安装更新-打开或关闭windows功能勾选 Microsoft Message Queue (MSMQ)服务器 ,这样消息队列才可以使用
下面我们来建一个简单的试例:
建一个窗体,拖上2个文本框一个用于发送消息,一个用于接收消息,如图所示:

单击发送消息的按钮时:[code=csharp] MessageQueue queue=null;
            string pathqueue = ".\\Private$\\myqueue";
            if (MessageQueue.Exists(pathqueue))
            {
                //如果此消息队列存在则打开消息队列
                queue = new MessageQueue(pathqueue);
            }
            else
            {
                //不存在就新建一个消息队列
                queue =MessageQueue.Create(pathqueue, false);
                queue.SetPermissions("Everyone", MessageQueueAccessRights.FullControl);

            }
            //创建消息
            System.Messaging.Message message = new System.Messaging.Message();
            message.Body = this.txtsendmessage.Text.Trim();
            //格式化字符串
            message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
            queue.Send(message);[/code]

这时已经将文本框的消息保存在消息队列中,接下来我们去取出来看看,在接收消息按钮的单击事件中写入:
[code=csharp] //打开消息队列
            MessageQueue messagequeue = new MessageQueue(".\\Private$\\myqueue");

            // Receive message, 同步的Receive方法阻塞当前执行线程,直到一个message可以得到
            System.Messaging.Message message = messagequeue.Receive();
            message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
            this.txtreceive.Text = message.Body.ToString();[/code]

是不是就有方才发送的消息了,这只是简单示范,如有刚好的,期待发上来大家分享一下,我还在学习中。。。。







欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4