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


你可能感兴趣的:(C#)