On Aug 19, 11:40*pm, rmq <zhangf...@xxxxxx> wrote:
Quote:
> In powershell console, I typed "calc", then "windows caculator"
> appear, then powershell immediately returned and I could type other
> commands, though "windows caculator" are still running.
>
> But if I wrote the following code in VS, I must manually close
> "windows caculator" first, the Main function return.
>
> So, why the behaviors are inconsistent?
>
> using ....
> namespace Host3 {
> * * class Program {
> * * * * static void Test2() {
> * * * * * * Runspace runspace = RunspaceFactory.CreateRunspace();
> * * * * * * runspace.Open();
> * * * * * * Pipeline pipeline = runspace.CreatePipeline("calc");
> * * * * * * pipeline.Invoke();
> * * * * * * runspace.Close();
> * * * * }
> * * * * static void Main(string[] args) {
> * * * * * * Test2();
> * * * * }
> * * }
>
> }
My C# foo isn't terribly strong, but I believe the problem is that
you're creating a pipeline that is going to keep waiting for output
from the command, because rather than just spawning a process you're
holding open the pipeline for it.
The same thing happens if you type this in at the prompt:
calc | select *
Your command won't return until calc.exe exits because the pipeline is
waiting for objects.