两个进程间通信,该怎么处理

两个进程间通信
一个Datasnap服务端程序,通过COM方式调用了水晶报表的ActiveX控件,程序运行几天时间就会崩溃,检查事件查看器,发现每次崩溃前都有水晶报表的一个craxdrt.dll报错,怀疑该模块不稳定,准备把这部分程序移到单独的exe中,在单独的进程中进行参数调用,这样这个进程崩溃不至于影响主服务程序,调用的问题可以通过参数解决

现在该如何在子进程中通知主服务进程:我已处理完毕,你可以处理接下来的任务?
------解决方案--------------------
引用:
一个Datasnap服务端程序,通过COM方式调用了水晶报表的ActiveX控件,程序运行几天时间就会崩溃,检查事件查看器,发现每次崩溃前都有水晶报表的一个craxdrt.dll报错,怀疑该模块不稳定,准备把这部分程序移到单独的exe中,在单独的进程中进行参数调用,这样这个进程崩溃不至于影响主服务程序,调用的问题可以通过参数解决

现在该如何在子进程中通知主服务进程:我已处理完毕,你可以处理接下来的任务?

1: 主服务进程实现WM_COPYDATA消息处理,子进程向主进程发WM_COPYDATA消息.
2: RegisterWindowMessage也可以实现你想要的东西。

------解决方案--------------------
activex不知道对消息有没有限制
不行就tcp通讯
------解决方案--------------------
你这个不需要复杂的通讯.调用子程序后waitforsingleobject等待子程序的进程句柄即可.如果你的子程序不是运行完就退出的,可以在父程序中创建一个event或者mutex,子程序打开它.父程序waitforsingleobject这个event或者mutex也行.
------解决方案--------------------
进程间通信,只是简单的可以用WM_COPYDATA.
SOCKET也是办法。
还有一个办法是使用内存映射文件,相当于创建了一个两个程序共享的内存空间。

A程序创建一个内存映射文件,将数据写入,然后通知道B去取。
B程序也创建一个内存映射文件,将结果数据写入,然后通知道A去取。
每个内存映射文件都一个去写,其它去读。
从功能和开发难度上来说,还是使用内存映射文件的方法比较好。

------解决方案--------------------
最简单的办法就是发windows消息