none
使用C# Process打开进程 RRS feed

  • 问题

  • 在Win7操作系统中,现有有A.exe, B.exe, C.exe, D.exe, E.exe等5个应用程序,需求是A执行完执行B,B执行完后执行C,C执行完后执行D,D执行完后执行E,其中打开应用程序,我使用的是Process.Start()方法,出现的现象是:第一次只能执行一个,运行第二次能执行2个,运行3次能执行3,运行4次能执行4个。请问是什么问题,谢谢,最好给予代码测试
    2015年11月20日 4:40

全部回复

  • 每次调用Process.Start()  请在主进程Thread.Sleep(100); 一段时间,这是为了让操作系统有一定的时间做Process Launch。

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年11月20日 8:47
    版主
  • 你好,我测试了一下,情况有所好转,一次能运行3个了,但是还是没有全部运行完,请问还可能是什么原因呢

    2015年11月21日 2:59
  • 您好,

    请问您是如何判断A/B/C/D/E是什么时候执行结束的呢?您是否使用的是WaitForExit方法?

    System.Diagnostics.Process exep1 = System.Diagnostics.Process.Start(@"C:\Windows\Notepad.exe");
    exep1.WaitForExit();
    MessageBox.Show("Notepad.exe1运行完毕");
    System.Diagnostics.Process exep2 = System.Diagnostics.Process.Start(@"C:\Windows\Notepad.exe");
    exep2.WaitForExit();
    MessageBox.Show("Notepad.exe2运行完毕");
    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年11月25日 8:55
  • 不好意思,现在还有一个问题,我使用2345好压选择7Z的压缩格式,将WPF生成的5个EXE文件分别压缩生成5个Exe文件,其中那5个WPF的EXE文件关闭的时候都有打开下一个压缩好的EXE文件(打开方式是Process.start("")),发现,打开到第三个压缩的EXE文件的时候,无法解压了,资源管理器中显示,CPU为0 ,内存也很小,请问是什么原因

    2015年11月27日 1:01
  • 您好,

    请问第三个文件有没有被正常打开,而且请检查第三个文件有没有被正确的压缩。另外你还可以试试设置WorkingDirectory 属性。

    processInfo.WorkingDirectory = Path.GetDirectoryName(pathOfYourEXE);
    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年11月27日 3:13
  • 不好意思,测试了,还是同样的问题,请问还可能有什么原因呢

    2015年12月2日 1:10
  • 您好,

    Process只负责帮助你执行这个文件,如果执行不了或者加压不了,我想应该是这个文件本身的问题。

    Best Regards,
    Li Wang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年12月2日 5:36
  • 直接使用鼠标双击是可以的

    2015年12月2日 10:34
  • 直接使用鼠标双击是可以的

    2015年12月14日 0:36
  • 我写了类似的代码来测试你的问题,发现其实很正常,当然我的进程相对比较简单,启动速度和关闭速度都会很快,中间用Thread.Sleep(100)等待了一会。

    如果你是双击启动,那么你的意思就是不挂在Debugger 启动,会正常。那就可能是debugger的原因,在第一个进程结束后,debugger应该也会退出,不确定这是否直接影响了整个后续进程。


    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2015年12月14日 5:58
    版主
  • 由主进程判断一下后台进程A,B,C,D,E的执行状态,比如说A执行完,int i+1,B 执行完int i+1,这样你就会让计算机很清楚的运行程序队列了。不然很可能A正在运行,没有运行完,B就开始运行了。B中调用A中的结果就调用不出来。然后程序崩溃。
    2015年12月14日 7:10