Jos*_*osh 9 .net c# multithreading event-handling
我有一个多线程winforms应用程序.GUI的一个线程,以及一个用于后台处理的线程.在后台处理中,我通过Process类与外部进程通信以发送接收数据.
我对运行了我注册的Process.OutputDataReceived的处理程序的线程感到困惑.根据MS文档:"OutputDataReceived事件表明关联的进程已写入其重定向的StandardOutput流." 但目前尚不清楚谁在举办此次活动.
请参阅以下示例代码:
myProc= new Process();
myProc.StartInfo.UseShellExecute = false;
myProc.StartInfo.RedirectStandardOutput = true;
myProc.StartInfo.RedirectStandardError = true;
myProc.StartInfo.RedirectStandardInput = true;
myProc.StartInfo.FileName = "myapp.exe";
myProc.StartInfo.Arguments = arguments;
myProc.StartInfo.CreateNoWindow = true;
myProc.OutputDataReceived += new DataReceivedEventHandler(DataReceivedFromProc);
myProc.ErrorDataReceived += new DataReceivedEventHandler(ErrorReceivedFromProc);
myProc.Start();
myOutputStream = myProc.StandardInput;
myProc.BeginOutputReadLine();
myProc.BeginErrorReadLine();
Run Code Online (Sandbox Code Playgroud)
那么在这种情况下,运行DataReceivedFromProc的线程是什么?如果在我的GUI线程与工作线程上执行上述操作会有所不同吗?