案例是这样的,有一个数组,存储着一系列文件名,如
string[] list = new string[]{"a.txt","b.txt","c.txt"}然后使用 System.Diagnostics.Process.Start 来启动一外部应用程序,将数组的每项作为参数传递给外部程序(已经实现)问题是当遍历这个数组的时候,Process 会启动很多子线程,我要的效果是 必须等待第一个参数执行完毕,也就是说 a.txt 被外部程序处理完之后,再执行 b.txt, 这就要第一个子线程(a.txt) 进行阻塞,等待它执行完毕,请教该如何处理?如果使用多线程来处理,将数组放在队列里,使用 thread 又将如何处理?

解决方案 »

  1.   

    你的第一个问题,可以避免使用多线程处理问题,刚刚看到一个帖子
    http://topic.csdn.net/u/20081014/09/f0e443dd-00d2-46ae-bd11-76f39382aa5a.html
    其中的8楼的解释代码就是一个进程,顺序执行,并且命令代码可以变成你的外部程序的命令就应该可以了。
    你可以参考。
      

  2.   

    有一个System.Diagnostics.Process.WaitForExit()方法你应该用的上吧?
      

  3.   

    没看明白.随便问一下:"a.txt 被外部程序处理完之后,再执行 b.txt,",
    这还需要多线程吗?
      

  4.   

    概念问题System.Diagnostics.Process.Start 是启动外部进程,不是thread.
    进程间的控制用lock显然不行,要用mutex,shephomore这种来做了
      

  5.   

    System.Diagnostics.Process是进程,不是线程。