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;
    }
}


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值