我有两个exe运行,c#控制台程序.从一个,我需要告诉第二个exe做某事?怎么样... ?我在看
(Remotable.CommonAssembly)Activator.GetObject(typeof(Remotable.CommonAssembly)
但是从这里我可以调用CommonAssembly(引用的dll)的方法而不是exe的方法.
对于简单的场景,一个普通的旧窗口事件就足够了 - 一个程序等待发出信号来做某事.
在等待事件的等待程序中生成一个线程.
//Program 1
EventWaitHandle evt = OpenOrCreateEvent("Global\\MyEvent");
evt.WaitOne(); // this thread will block waiting without wasting CPU cycles,
// it will be be signaled from the kernel
// when the event is set
DoStuff();
//Program 2
EventWaitHandle evt = OpenOrCreateEvent("Global\\MyEvent");
evt.Set();
Run Code Online (Sandbox Code Playgroud)
看一下EventWaitHandle,ManualResetEvent,AutoResetEvent类.
如果您有更复杂的通信协议以及不同的触发操作,返回值等,那么高级IPC机制(如WCF,Remoting,DCOM,CORBA等)可能会更好.对于简单的情况(一对)窗口事件就足够了.
注意 如果需要在进程间传输数据,请考虑内存映射文件..NET 4.0将提供"官方".NET类,目前可以使用http://github.com/tomasr/filemap/tree/master