C# 进程间通信 (Process Communication in C#)

来源:互联网 发布:淘宝网店铺装修实战 编辑:程序博客网 时间:2024/05/19 00:53

简单介绍

进程间通信就是在不同进程之间传播或交换信息。这里总结了Windows系统中的进程间通信的一些方式,用C#实现了出来。


C# 进程间通信的多种方式

  • Clipboard
  • COM
  • File Mapping (Sharing memory)
  • Mailslots
  • Pipes
  • RPC
  • Windows Sockets

这里只简要介绍其中的三种,并附上源码,源码还是非常有用的,比文字更有说服力。


管道 (Pipes)


管道的分类:
  • 匿名管道 -  半双工通信, 它常用于父子进程之间的通信

  • 命名管道 -  进程之间做双工通信
                                 跨网络在不同机器之间进行通信

管道两端的进程可以分别对管道进行读和写的操作。

pipe_diagram


管道实例源码下载



消息队列


MSMQ (MicroSoft Message Queue)
    -    不同进程间传输消息的一种方式,是异步传输模式,相互通信的应用程序可以分布于同一台机器上,也可以分布于相连的网络中。

msg_queue_diam


使用MicroSoft Message Queue

    -    准备使用 MicroSoft Message Queue

    prepare_pic



    -   运行时管理 MicroSoft Message Queue 

    msq_runtime_pic



消息队列实例源码下载



共享内存


利用文件与内存空间之间的映射,应用程序(包括多个进程)可以通过直接在内存中进行读写来修改文件

共享内存通信的部署方式
share_memory_component_pic



共享内存的通信方式
share_memory_communication_pic

实例程序 运行顺序:
  1. 先启动消息服务 IMServer_Message,
  2. 再启动状态服务 IMServer_State,
  3. IMServer_Message 回车一次(创建共享内存公用名和公用线程锁,并用视图流方式写共享内存),
  4. IMServer_State 回车一次(获取共享内存并视图流方式写、视图访问器写入结构体类型)
  5. 并立刻IMServer_Message再回车一次(读取刚刚写入的信息),
  6. 观察IMServer_State 屏显变化并等待(线程锁) 约5s(线程锁被释放)
  7. 在IMServer_Message上观察屏显(显示刚刚写入共享内存的信息)



共享内存实例源码下载


原创粉丝点击