首页新闻找找看学习计划

C# 怎样设计一个单进程,多线程的程序?

0
悬赏园豆:50 [待解决问题]

我想写一个在右键菜单复制文件路径的功能。

复制功能的实现是通过cmd调用我写的exe程序来实现。但当我选中多个文件进行复制时,windows每调用一次就会新建一个进程。现在我想多次调用时,都是访问到同一个进程,之后在进程中新建一个线程来实现,并且这些线程还会进行排队,按顺序运行,当全部线程运行完毕时,释放进程。

请问这样的程序要怎样实现?

Ten_cnblogs的主页 Ten_cnblogs | 初学一级 | 园豆:21
提问于:2014-08-13 16:35
< >
分享
所有回答(3)
0

我觉得你这是夸进程通信的问题。

一个进程会创建另外个进程并执行操作,这个处理进程开放某种通信方式就行了,比如Windows Message,Socket...

Firen | 园豆:5483 (大侠五级) | 2014-08-13 17:12

复制功能的实现是通过cmd调用我写的exe程序来实现

另一种是把多个参数合并成一个参数,传递给启动的进程。

支持(0) 反对(0) Firen | 园豆:5483 (大侠五级) | 2014-08-13 17:19

在windows上新开一个进程很慢,我一次复制多个文件的名称,会卡死。所以我想通过新建线程的方式来实现,像sublime text这个编辑器一样,同时选中多个文件打开,也只是新建了一个进程。

支持(0) 反对(0) Ten_cnblogs | 园豆:21 (初学一级) | 2014-08-13 17:20

@Ten_cnblogs: 把调用你自己写的EXE的代码贴出来。

支持(0) 反对(0) Firen | 园豆:5483 (大侠五级) | 2014-08-14 10:44

@Firen: 我是通过命令行调用的,完整代码在这里,http://pan.baidu.com/s/1wA02q

支持(0) 反对(0) Ten_cnblogs | 园豆:21 (初学一级) | 2014-08-14 16:36

@Ten_cnblogs: 在Main函数里判断名称ContextCopy的进程是否已经存在,如果已经存在,就把接收到的参数传递给已存在的ContextCopy进程实例,然后自己退出。

支持(0) 反对(0) Firen | 园豆:5483 (大侠五级) | 2014-08-14 17:08
0

这个需求其实就是要做一个单实例的app, 可以参考"http://code.msdn.microsoft.com/TasksShow-1bf01c8d/sourcecode?fileId=18647&pathId=1449080186" 这个页面的"SingleInstance.cs"方法, 修改你的App class, 实现"SignalExternalCommandLineArgs"方法, 在此方法中获取cmd传给你的参数, 并创建一个线程实现功能.

jpss | 园豆:265 (菜鸟二级) | 2014-08-16 22:11
0

通过windows shell可以解决我的需求

Ten_cnblogs | 园豆:21 (初学一级) | 2014-08-29 10:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册