Execute Process Chain

后端 未结 2 1135
半阙折子戏
半阙折子戏 2021-01-13 18:48
  public void ExecuteProcessChain(string[] asProcesses, string sInRedirect, string sOutRedirect)
    {
            Process p1 = new Process();
            p1.StartIn         


        
相关标签:
2条回答
  • 2021-01-13 19:19

    Why not use threading?

    Consider this: Put each calc into a thread and then start them both. After that make the program wait for them. Only after both threads are done with their jobs (read data) then you can continue.

    Remember that threads cannot directly alter data from another thread so I might suggest the use of Invoke or static variables, depending on what you might need.

    If possible, you can make use of Task/Parallel library which already have some useful methods to help you on this.

    Background Worker is too a way to go.

    0 讨论(0)
  • 2021-01-13 19:36

    ReadLine is reading from the output of the first calc. Calc doesn't send any output. So, ReadLine will never return and thus the next calc will not start. When the first calc terminates, ReadLine can no longer read from the first calc, so returns null. After it has returned, the code can start the second calc.

    You can either not read from the first calc or read asynchronously. You might want to refer to Async ReadLine on how to read asynchronously.

    You could alternatively start the second calc with p2 before you start calling ReadLine.

    0 讨论(0)
提交回复
热议问题