首页 新闻 会员 周边

C# 多进程 程序开发(是多进程,不是多线程)

0
悬赏园豆:200 [已解决问题] 解决于 2013-04-15 10:17

我想实现以下功能,

主进程控制下面多个子进程,包括启动,停止,更新,以及运行参数,是否异常,定期更新

并且子进程出现异常以后主进程可以检测到,并且不会影响到其他子进程以及主进程的运行,

 

因此涉及到多进程开发的问题,

之前没有做过这一块,所以想请教下:

1.C#是否支持类似多进程开发.?如果支持,能否给些相关资料.?

2.如果不支持的话,是否只能做多个进程,然后利用各进程之间的通讯实现,?那么有什么好的进程之间通讯的组建,或是类库,或是一些资料也可以.?

3.目前市面上,是否有类似这种多个进程工作的成性的产品,类似于插件式,但是每个插件执行起来都是一个进程,?

 

求高手解答,万分感谢.

只会造轮子的主页 只会造轮子 | 老鸟四级 | 园豆:2274
提问于:2013-03-01 17:39
< >
分享
最佳答案
0

你的3个问题问出来还不如不问啊!

多进程开发很普遍,基本上每一个高级程序语言都可以进行!具体的例子比如说遨游浏览器,等的所谓多线程实际上都是都是采用多进程的方式,由主程序控制!

我的一些小工具也有采用多进程(独立的EXE)的方式!

子进程和主程序采用管道通信,由主程序发送预设定的命令给子进程判断处理自身的业务,然后反馈信息给主程序!各自都是独立的 不会有影响!

收获园豆:100
红花郎 | 菜鸟二级 |园豆:323 | 2013-03-05 00:40

感谢您的回复,

那关于通讯,是否有比较好用的组件呢.?

之前没弄过这块,只是大该知道逻辑,没有实际操作过.

只会造轮子 | 园豆:2274 (老鸟四级) | 2013-03-05 10:20

@发粪图墙: 

进程间命名管道通信:

http://www.codeproject.com/Articles/7176/Inter-Process-Communication-in-NET-Using-Named-Pip

 

也可以采用 SOCKET进行通信,这个你搜索一下 园子里很多!

红花郎 | 园豆:323 (菜鸟二级) | 2013-03-05 11:15
其他回答(4)
0

我经验浅,感觉 就是你的 第2点。

收获园豆:10
Qlin | 园豆:2403 (老鸟四级) | 2013-03-01 18:41
1

我也没做过……

1、可以考虑使用Process类控制进程的开关

2、主进程和子进程要实现通讯机制(eg:socket),用于检测/通知异常,通知更新之类

收获园豆:30
滴答的雨 | 园豆:3660 (老鸟四级) | 2013-03-01 19:07
1

可以试试.net的应用程序域(AppDomain)来实现你的功能

收获园豆:10
wang_yb | 园豆:4891 (老鸟四级) | 2013-03-01 21:38
0

1.C#是否支持类似多进程开发.?如果支持,能否给些相关资料.?

答:本人才疏学浅,不知道。不过进程其实就是虚拟的一个程序独享的一些内存和数据,应该没有类似线程那样的API。可以使用Process类在一个进程中对另一个进程进行运行,关闭等简单的操作。

2.如果不支持的话,是否只能做多个进程,然后利用各进程之间的通讯实现,?那么有什么好的进程之间通讯的组建,或是类库,或是一些资料也可以.?

答,启动和停止功能用Process类就能实现,可以上网查查怎么打开或关闭一个进程,很简单;重启其实就是关闭再打开;是否异常定期更新可以通过主进程和子进程共享文件的方式实现,子进程定时更新文件内容,如写入当前时间,父进程读取文件内容,如果发现子进程很久都没有写入文件内容,就说明子进程异常停止了,需要更新,该文件可称之为“心跳文件”;运行参数可以在父进程启动子进程时传入,Process类应该可以实现,具体忘记了怎么弄了。

 

我以前写过一个类似的,就是怎么实现的,如果楼主有什么更好的方法,高速我一声

收获园豆:50
会长 | 园豆:12401 (专家六级) | 2013-03-02 10:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册