Tengo una aplicación de winforms multiproceso. Un hilo para la GUI y un hilo para el procesamiento en segundo plano. En el procesamiento en segundo plano, me comunico con un proceso externo a través de la clase Process para enviar datos de recepción.¿Qué subproceso se procesó y procesó en Process.OutputDataReceived?
Estoy confundido acerca de qué hilo se ejecutó el controlador que registré Process.OutputDataReceived. De acuerdo con la documentación de MS: "El evento OutputDataReceived indica que el proceso asociado ha escrito en su flujo de salida StandardOutput redirigido". Pero no está claro quién está planteando el evento.
Ver código de ejemplo a continuación:
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();
Así que en este caso, ¿qué hilo se ejecuta en DataReceivedFromProc? ¿Hay alguna diferencia si lo anterior se ejecuta en mi hilo GUI vs hilo de trabajo?
¿Qué tiene que ver el evento de salida del proceso con los eventos que se generan mientras se está ejecutando el proceso? – Josh
@Josh: Todos los eventos se generan de la misma manera (comprobé el origen, en 'interno vacío OutputReadNotifyUser') – SLaks
También una nota para el futuro:" Si el proceso se usa dentro de Visual Studio 2005 en un diseñador de Windows Forms , SynchronizingObject se establece automáticamente en el control que contiene el Proceso. " – Josh