怎样多线程调用同一个EXE,并且只产生一个EXE的进程呢?

number321 2012-05-08 11:08:17
我的一个程序需要调用某个EXE,来获取结果.需要做上千次这样的调用.
为了让速度快一些,我想用多线程.但这样的话,如果同时开50个线程,每个线程都开启一个EXE进程,系统就会同时多出50个这样的EXE对应的进程.线程越多系统里面要调用的那个EXE进程越多.这样感觉不太好.

有没有办法让这些线程同时调用同一个这样的EXE呢?让系统里面只出现一个这样的EXE进程.
...全文
325 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
number321 2012-05-09
但有些EXE是从网上找的,遇到这种情况应该怎么办呢
  • 打赏
  • 举报
回复
avi9111 2012-05-08
看看process有没其他属性咯,没有就没有了
  • 打赏
  • 举报
回复
bdmh 2012-05-08
google c# 程序 单例
  • 打赏
  • 举报
回复
newxdlysk 2012-05-08
[Quote=引用 4 楼 的回复:]

引用 1 楼 的回复:

google c# 程序 单例


我的意思是程序的多线程可以同时使用这个EXE的功能.而不是各个线程轮流去使用这个EXE.
但是又可以不产生多个EXE进程,不知道有没有什么办法可以做到呢?直接的或者间接的都可以.
[/Quote]
将EXE封装成dll再调用吧,dll可以加载到共享内存空间,exe的内存空间是独立的。这就像单核cpu无法实现真正意义上的多线程一样,你这个只能轮流使用这个EXE
  • 打赏
  • 举报
回复
yangchun1213 2012-05-08
单例模式,试试吧,不行google和百度,祝你好运
  • 打赏
  • 举报
回复
number321 2012-05-08
[Quote=引用 1 楼 的回复:]

google c# 程序 单例
[/Quote]

我的意思是程序的多线程可以同时使用这个EXE的功能.而不是各个线程轮流去使用这个EXE.
但是又可以不产生多个EXE进程,不知道有没有什么办法可以做到呢?直接的或者间接的都可以.
  • 打赏
  • 举报
回复
wangsong145 2012-05-08
采用单例模式:

/// </summary> public class OpenExeTool { public static readonly object m_SyncObj = new object(); private static OpenExeTool m_OpenExeTool = null; private OpenExeTool() { this.OpenExe(); } private void OpenExe() { Process.Start("QQ.exe"); } public static OpenExeTool CreateInstance() { if (m_OpenExeTool == null) { lock (m_SyncObj) { if (m_OpenExeTool == null) { m_OpenExeTool = new OpenExeTool(); } } } return m_OpenExeTool; }

/// <summary> /// 调用方式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_Load(object sender, EventArgs e) { OpenExeTool openExeTool = OpenExeTool.CreateInstance(); }
  • 打赏
  • 举报
回复
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2012-05-08 11:08
社区公告

让您成为最强悍的C#开发者