WaitForExit等待的是什么?
System.Diagnostics.Process pro = System.Diagnostics.Process.Start("EXCEL.EXE"); 
pro.WaitForExit();
pro.Close();

解决方案 »

  1.   

    pro.EnableRaisingEvents = true;
      

  2.   

    这个参数是什么意思?还有想问一下,如果我要启动一个与程序本身完全没有关联的外部程序,该怎么启动?
    Quote=引用 1 楼  的回复:]pro.EnableRaisingEvents = true;
    [/Quote]
      

  3.   

    Process pro = Process.Start(可执行文件路径);
    这样就是启动没有关联的外部程序啊
      

  4.   

    EnableRaisingEvents 
    获取或设置在进程终止时是否应激发 Exited 事件。如果我要启动一个与程序本身完全没有关联的外部程序,该怎么启动?
    就你这么
    System.Diagnostics.Process pro = System.Diagnostics.Process.Start("EXCEL.EXE"); 
      

  5.   

    我想了很久,还是觉得不妥。下面这个例子,就体现是有关联的。
    因为下面pro.WaitForExit()起作用了,进入了阻塞,直到复制动作完毕。
    System.Diagnostics.Process pro = System.Diagnostics.Process.Start("xcopy.exe", "111 222\\ /S /E");   //把文件夹111中的内容,完整复制到文件夹222中。
    pro.WaitForExit();
      

  6.   

    这里说是有关联的啊。http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.start%28v=vs.80%29
      

  7.   


    通过指定文档或应用程序文件的名称来启动进程资源,并将资源与新的 Process 组件关联是指这个process对象与新启动的资源的关联,否则怎么能获取MainModule、MainWindowHandle这些其他进程的属性
      

  8.   

    程序本身不记录外部程序的任何信息。
    就像鼠标双击exe一样,只有操作系统记录了Exe的信息一样吧。大概就是这样的意思。
      

  9.   

    ShellExecute是对外部EXE有一定的控制的啊。我现在的情况是,不需要对外部EXE进行任何的控制。应该就是以无关联的方式打开外部EXE吧。
      

  10.   


    不需要对外部EXE进行任何的控制。应该就是以无关联的方式打开外部EXE吧
    你有没有觉得有点矛盾?
      

  11.   

    能否解释一下,为什么5楼的例子,不需要设置pro.EnableRaisingEvents = true;?
    而一楼的例子,则需要设置?
      

  12.   

    我只能大胆的估计这和windows的消息机制有关,因为一个是基于窗口的程序,一个是基于控制台的,至于为什么,一时半会儿说不上来
      

  13.   

    也有道理。
    这样的话,是不是可以证明,普通的process.start启动,应该是有关联的吧。
      

  14.   

    不是关不关联的问题,操作系统允许进程访问其他进程的部分信息,就算你在别的地方打开了,依然可以这样,比如
    Process[] proc = Process.GetProcessesByName("devenv");
    proc[0].WaitForExit();
    这样可以等待 vs 关闭呢