C# 共享内存通信示例 - 两个进程间通过共享内存实现通信
项目描述
本资源文件提供了一个C#实现的共享内存通信示例,展示了如何在两个独立的进程之间通过共享内存进行通信。项目分为三个工程:proA
、proB
和 ShareMemLib
。
工程结构
- proA 和 proB:
- 这两个工程是用WPF编写的模拟进程程序。
proA
和proB
分别代表两个独立的进程,它们通过共享内存进行通信。
- 这两个工程是用WPF编写的模拟进程程序。
- ShareMemLib:
- 该工程将共享内存的实现代码封装成一个库(lib),方便在其他项目中复用。
ShareMemLib
定义了发送者和监听者两个角色,并提供了相应的接口和方法。
- 该工程将共享内存的实现代码封装成一个库(lib),方便在其他项目中复用。
实现原理
- 发送者(Sender):
- 发送者负责将消息写入共享内存。在实例化
ShareMemory
时,需要指定相同的map
名称,并设置当前实例为发送者。
- 发送者负责将消息写入共享内存。在实例化
- 监听者(Listener):
- 监听者负责从共享内存中读取消息。在实例化
ShareMemory
时,同样需要指定相同的map
名称,并设置当前实例为监听者。监听者必须实现接收消息的处理方法。
- 监听者负责从共享内存中读取消息。在实例化
使用步骤
- 实例化共享内存:
- 在
proA
和proB
中分别实例化ShareMemory
,并指定相同的map
名称。 - 在
proA
中设置当前实例为发送者,在proB
中设置当前实例为监听者。
- 在
- 发送消息:
- 发送者在
proA
中调用发送消息的方法,将消息写入共享内存。
- 发送者在
- 接收消息:
- 监听者在
proB
中实现接收消息的处理方法,当监听到消息时,自动调用该方法进行处理。
- 监听者在
注意事项
- map 名称:
- 发送者和监听者必须使用相同的
map
名称,否则无法正确通信。
- 发送者和监听者必须使用相同的
- 监听者处理方法:
- 监听者必须实现接收消息的处理方法,否则无法正确处理接收到的消息。
通过以上步骤,proA
和 proB
两个进程可以成功通过共享内存实现通信。