我想实现以下功能,
主进程控制下面多个子进程,包括启动,停止,更新,以及运行参数,是否异常,定期更新
并且子进程出现异常以后主进程可以检测到,并且不会影响到其他子进程以及主进程的运行,
因此涉及到多进程开发的问题,
之前没有做过这一块,所以想请教下:
1.C#是否支持类似多进程开发.?如果支持,能否给些相关资料.?
2.如果不支持的话,是否只能做多个进程,然后利用各进程之间的通讯实现,?那么有什么好的进程之间通讯的组建,或是类库,或是一些资料也可以.?
3.目前市面上,是否有类似这种多个进程工作的成性的产品,类似于插件式,但是每个插件执行起来都是一个进程,?
求高手解答,万分感谢.
你的3个问题问出来还不如不问啊!
多进程开发很普遍,基本上每一个高级程序语言都可以进行!具体的例子比如说遨游浏览器,等的所谓多线程实际上都是都是采用多进程的方式,由主程序控制!
我的一些小工具也有采用多进程(独立的EXE)的方式!
子进程和主程序采用管道通信,由主程序发送预设定的命令给子进程判断处理自身的业务,然后反馈信息给主程序!各自都是独立的 不会有影响!
感谢您的回复,
那关于通讯,是否有比较好用的组件呢.?
之前没弄过这块,只是大该知道逻辑,没有实际操作过.
@发粪图墙:
进程间命名管道通信:
http://www.codeproject.com/Articles/7176/Inter-Process-Communication-in-NET-Using-Named-Pip
也可以采用 SOCKET进行通信,这个你搜索一下 园子里很多!
我经验浅,感觉 就是你的 第2点。
我也没做过……
1、可以考虑使用Process类控制进程的开关
2、主进程和子进程要实现通讯机制(eg:socket),用于检测/通知异常,通知更新之类
可以试试.net的应用程序域(AppDomain)来实现你的功能
1.C#是否支持类似多进程开发.?如果支持,能否给些相关资料.?
答:本人才疏学浅,不知道。不过进程其实就是虚拟的一个程序独享的一些内存和数据,应该没有类似线程那样的API。可以使用Process类在一个进程中对另一个进程进行运行,关闭等简单的操作。
2.如果不支持的话,是否只能做多个进程,然后利用各进程之间的通讯实现,?那么有什么好的进程之间通讯的组建,或是类库,或是一些资料也可以.?
答,启动和停止功能用Process类就能实现,可以上网查查怎么打开或关闭一个进程,很简单;重启其实就是关闭再打开;是否异常定期更新可以通过主进程和子进程共享文件的方式实现,子进程定时更新文件内容,如写入当前时间,父进程读取文件内容,如果发现子进程很久都没有写入文件内容,就说明子进程异常停止了,需要更新,该文件可称之为“心跳文件”;运行参数可以在父进程启动子进程时传入,Process类应该可以实现,具体忘记了怎么弄了。
我以前写过一个类似的,就是怎么实现的,如果楼主有什么更好的方法,高速我一声