发消息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Messaging; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string QueuePath = ".\\private$\\test";
IMessageFormatter formatter = new System.Messaging.BinaryMessageFormatter(); private void button1_Click(object sender, EventArgs e)
{
MessageQueue queue;
if (!MessageQueue.Exists(QueuePath))
{
queue = MessageQueue.Create(QueuePath);
queue.SetPermissions("Administrators", MessageQueueAccessRights.FullControl);
queue.Label = QueuePath;
} System.Messaging.Message message = new System.Messaging.Message();
message.Body = richTextBox1.Text;
message.Formatter = formatter; if (!MessageQueue.Exists(QueuePath))
{
return;
} queue = new System.Messaging.MessageQueue(QueuePath);
queue.Send(message);
} }
}

收消息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Messaging; namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string QueuePath = ".\\private$\\test";
IMessageFormatter formatter = new System.Messaging.BinaryMessageFormatter();
private void Form1_Load(object sender, EventArgs e)
{ }
private object obj = new object();
private void MessageQueueReceive()
{
if (!MessageQueue.Exists(QueuePath))
{
return;
}
MessageQueue queue = new MessageQueue(QueuePath);
System.Messaging.Message message = queue.Receive();
message.Formatter = formatter;
lock (obj)//加锁
{
WriteLog(message.Body.ToString());//给你的控件赋值
}
MessageQueueReceive();
} private void button1_Click(object sender, EventArgs e)
{
Thread myThread = new Thread(new ThreadStart(MessageQueueReceive));
myThread.Start();
}
//定义一个委托
private delegate void WriteLogHandle(string format);
//输出
private void WriteLog(string msg)
{
if (richTextBox1.InvokeRequired)
{
richTextBox1.BeginInvoke(new WriteLogHandle(WriteLog), msg);
}
else
{
richTextBox1.AppendText(string.Format(msg));
}
}
}
}

C# 消息队列 多线程 委托的更多相关文章

  1. Python进阶【第二篇】多线程、消息队列queue

    1.Python多线程.多进程 目的提高并发 1.一个应用程序,可以有多进程和多线程 2.默认:单进程,单线程 3.单进程,多线程 IO操作,不占用CPU python的多线程:IO操作,多线程提供并 ...

  2. Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载

    效果图: 1.activity_main.xml 描述:定义了六个按钮 <?xml version="1.0" encoding="utf-8"?> ...

  3. day10 消息队列,多进程和多线程以及协程,异步IO,事件驱动等

    回顾一下线程和进程 线程与进程的区别 守护线程: 队列: 两种方式: 先进先出  # 后入先出   #卖水果,后来的来的是新的 生产者消费者模型: 生产包子, 吃包子 事件 event: 红绿灯模型 ...

  4. 深入浅出Win32多线程设计之MFC的多线程-线程与消息队列(经典)

    1.创建和终止线程 在MFC程序中创建一个线程,宜调用AfxBeginThread函数.该函数因参数不同而具有两种重载版本,分别对应工作者线程和用户接口(UI)线程. 工作者线程 CWinThread ...

  5. 微软 消息队列 MessageQueue 简单使用

    1.在服务电脑上打开 消息队列 ①进入控制面板>程序>启用或关闭windows功能 ②将需要的勾选(我自己全选了哈哈哈) ③我的电脑 右键 打开管理 见到消息队列 在专用队列上新建专用队列 ...

  6. C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

  7. PetShop 4.0学习笔记:消息队列MSMQ

    直到今天才知道,在我们每天都在用的Window系统里还有这么好用的一个编程组件:消息队列.它能够解决在大数据量交换的情况下的性能问题,特别是BS系统的数据库性能.而且它的异步处理方式能给程序员最大的便 ...

  8. C#实战Microsoft Messaging Queue(MSMQ)消息队列

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

  9. C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)<转>

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

随机推荐

  1. 使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

    使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复 这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 ...

  2. 停止node进程

    运行vue-cli项目的时候经常出现端口号占用,npm run dev报错的信息, 此时可通过任务管理器粗暴的杀死node进程,也可以通过cmd检测占用某个端口的程序,进而杀死该进程,步骤如下: 1. ...

  3. [转] datetime.now、datetime.utcnow以及Django中的timezone.now之间的区别

      https://blog.csdn.net/sinat_41898105/article/details/80984298   在我们使用Django做项目时经常会遇到时间的存储与读取不一致的问题 ...

  4. Zabbix搭建部署与概述(一)

    搭建部署与概述(一) 链接:https://pan.baidu.com/s/1q5YwJMTcZLcS5OQ0iOu44A 提取码:8gdi 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...

  5. TypeError: Object of type 'int32' is not JSON serializable

    将模型用flask封装,返回json时报错:TypeError: Object of type 'int32' is not JSON serializable 网上搜索出的解决方案:重写json.J ...

  6. css 实现文本换行及显示不下隐藏显示省略号

    CSS文本超出2行就隐藏并且显示省略号 转载:https://www.cnblogs.com/wyaocn/p/5830364.html   今天做东西,遇到了这个问题,百度后总结得到了这个结果. 首 ...

  7. linux netstat 统计连接数查看外部(转)

    转自:http://boy-liguang.blog.sohu.com/187052443.html linux netstat 统计连接数查看外部 2011-10-11 08:52阅读(16333) ...

  8. io.File+递归

    import java.io.File ; import java.io.IOException ; public class FileDemo11{ public static void main( ...

  9. Java里的参数类型/返回值类型

    参数类型/返回值类型: ##数据类型: ###基本类型: ###引用类型: ####数组 ####类 ####接口 参数类型/返回值类型是类和接口的情况: 1.参数类型是普通类的情况 为什么写成静态, ...

  10. php高版本安装ecshop错误解决方法

    1.Strict Standards: Non-static method cls_image::gd_version() should not be called statically in F:\ ...