注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

C#小知识之二在进程间使用同步EVENT事件  

2013-07-18 22:07:03|  分类: NET(C#) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

C#小知识之二在进程间使用同步EVENT事件

C++中,对跨进程使用各种同步的方法,用得还是比较多的,但在C#中跨进程编程就比较少了,更多的使用了其它一些机制,特别是WCF做为一种分布式编程的技术逐渐被推广后,也越来越方便了。

原来在线程间使用事件,大多使用这两个AutoResetEvent ManualResetEvent,但在跨进程中使用就不可以了。这时候就得祭出他们两个的父类EventWaitHandle,大家看一下他的重载构造函数:

EventWaitHandle(Boolean, EventResetMode)

EventWaitHandle(Boolean, EventResetMode, String)

EventWaitHandle(Boolean, EventResetMode, String, Boolean )

EventWaitHandle(Boolean, EventResetMode, String, Boolean , EventWaitHandleSecurity)

详细的说明大家去看MSDN,这里不再抄一遍了。

这里说明的是上面的构造函数中的String的参数指的就是C++里的事件的名称,或者你可以叫有名事件,(互斥体也是类似)这样,在一个进程中创建一个事件时,就可以在另外一个进程中通下面这个函数,利用这个名字参数打开一个这个事件的句柄并进行控制,当然,在MSDN中也说明了,这个函数每次打开后返回的句柄未必是同一个。

EventWaitHandle.OpenExisting("XXX");

举一个小例子:

A进程:

        static EventWaitHandle evh = new EventWaitHandle(false,0,"test");

        private void button2_Click(object sender, EventArgs e)

        {

            evh.Set();

        }

B进程:

        static EventWaitHandle evh = EventWaitHandle.OpenExisting("test");

 

        static void Main(string[] args)

        {

            bool t = evh.WaitOne();

            if (t)

            {

                return;

            }

        }

纸上学来终觉浅,决知此事要躬行。

  评论这张
 
阅读(1748)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017