Monday 26 December 2016

Standard Output C # Process Waitforexit

Su solución no necesita AutoResetEvent pero encuesta. Cuando haces sondeo en lugar de utilizar el evento (cuando están disponibles), entonces estás usando la CPU sin ninguna razón y eso indica que eres un programador defectuoso. Su solución es realmente mala cuando se compara con la otra utilizando AutoResetEvent. (Pero no te di -1 porque trataste de ayudar). Ndash Eric Ouellet Nov 7 14 at 18:38 Yo estaba teniendo el mismo problema, pero la razón era diferente. Sin embargo sucedería bajo Windows 8, pero no bajo Windows 7. La línea siguiente parece haber causado el problema. La solución era NO deshabilitar UseShellExecute. Ahora recibí una ventana emergente de Shell, que no es deseada, pero mucho mejor que el programa esperando que nada particular suceda. Así que añadí el siguiente trabajo para que: Ahora lo único que me molesta es por qué esto está sucediendo bajo Windows 8 en el primer lugar. Responde Jan 13 15 at 10:35 Ejemplo de uso ImplementaciónLee lo que dice MSDN: La sobrecarga WaitForExit () () () se utiliza para hacer que el subproceso actual espere hasta que el proceso asociado termine. Este método indica al componente Proceso que espere una cantidad infinita de tiempo para que el proceso salga. Esto puede hacer que una aplicación deje de responder. Por ejemplo, si llama a CloseMainWindow para un proceso que tiene una interfaz de usuario, la solicitud al sistema operativo para finalizar el proceso asociado puede no ser manejada si el proceso se escribe para no introducir nunca su bucle de mensajes. Esta sobrecarga asegura que todo el procesamiento ha sido completado, incluyendo el manejo de eventos asíncronos para la salida estándar redireccionada. Debe utilizar esta sobrecarga después de una llamada a la sobrecarga WaitForExit (Int32) cuando la salida estándar se ha redirigido a los controladores de eventos asincrónicos. Esto es por supuesto para. NET. Qué te hace pensar que no espera que el proceso de la nota finalice? Cuáles son los signos de eso? Cuál es la prueba? No estoy seguro de si esto ha cambiado recientemente, pero de vuelta en las aplicaciones de día en la ventana El móvil nunca se cierra cuando golpeas la X para cerrarlas, solo minimizarían y seguirían ejecutándose en segundo plano (esto no era un error, era una característica, ya que la próxima vez que inicias la aplicación, se iniciaría muy rápido, yah Lo sé, loco pero cierto) por lo que podría ser por qué WaitForExit es quizás comportándose de forma extraña y esperando la puesta en marcha de la aplicación en lugar de salir. Pero entonces otra vez es apenas especulación basada en knowlegde de versiones antiguas de Windows Mobile. Viernes 20 de Febrero de 2009 23:03 Id me gustaría superar esta pregunta. Estoy en Windows Mobile 6 Standard y estoy tratando de generar una instancia de navegador. Me gustaría esperar hasta que el usuario cierre el navegador. Pero WaitForExit devuelve muy rápido. Aquí está el código: Proceso p nuevo Proceso () p. StartInfo. Argumentos quotexample-sitequot p. StartInfo. Verb quotOpenquot p. StartInfo. UseShellExecute falso p. StartInfo. FileName quotIExplore. exequot p. Start () p. WaitForExit () MessageBox. Show (quotNow el navegador debe ser closedquot) Cuál debe ser la manera correcta de obtener los resultados esperados Monday, June 08, 2009 10:45 PM Dónde está el símbolo. símbolo. AlexB Tuesday, June 09, 2009 9:58 PM Estoy viendo el mismo problema, pero en XP. Creo que la prueba se puede ver en cualquier depurador (como estoy viendo), o en cualquier aplicación de consola (no necesariamente en el móvil) Miércoles, 02 de septiembre de 2009 20:35 Excepto que no se obtiene un objeto de proceso que puede utilizar. Si intenta Dim myProc como nuevo proceso () myProc Process. Start (quotiexplorerquot, quotfinance. yahoo/q/hpsquot símbolo) myProc. WaitForExit () todavía devuelve inmediatamente. Miércoles, 02 de septiembre de 2009 20:48 Problema es que no está iniciando una nueva instancia de iexplore. exe. Sólo está creando una nueva ventana en el proceso existente. Mi conjetura es iexplore. exe comienza, ve una instancia anterior y se comunica con la instancia anterior de modo que abra la nueva ventana, y entonces esta instancia que usted comenzó salidas inmediatamente. Así que el comportamiento es correcto y esperable. Blog. voidnish Miércoles, 02 de septiembre de 2009 20:52 Microsoft está realizando una encuesta en línea para entender su opinión sobre el sitio web Msdn. Si decide participar, se le presentará la encuesta en línea cuando abandone el sitio Web de Msdn. Te gustaría participarSystem. Diagnostics. Process: redirect StandardInput, StandardOutput, StandardError 82218217 InputAndOutputToEnd: una manera práctica de usar la entrada / salida / error redireccionada en un p. 82218217 ltparam name8221p8221gtP para redireccionar. Debe tener UseShellExecute establecido en false. lt/paramgt 82218217 ltparam name8221StandardInput8221gtEsta cadena se enviará como entrada a la p. (Debe ser Nothing si no StartInfo. RedirectStandardInput) lt / paramgt 82218217 ltparam name8221StandardOutput8221gtLa salida de p8217s se recopilará en esta cadena ByRef. (Debe ser nada si no StartInfo. RedirectStandardOutput) lt / paramgt 82218217 ltparam name8221StandardError8221gtThe p8217s error se recoge en esta cadena ByRef. (Debe ser nada si no StartInfo. RedirectStandardError) Función lt / paramgt 82218217 ltremarksgtThis resuelve el problema de interbloqueo mencionado al msdn. microsoft/en-us/library/system. diagnostics. p.standardoutput. aspxlt/remarksgt ltRuntimepilerServices. Extension () gt Sub InputAndOutputToEnd (p ByVal Como Diagnostics. Process, ByVal como secuencia StandardInput. ByRef StandardOutput como secuencia. ByRef StandardError como secuencia) Si p es nada Then Throw New ArgumentException (8220p debe ser no null8221) 8216 p Supongamos ha comenzado. Por desgracia no hay forma de comprobarlo. Si p. StartInfo. UseShellExecute luego tirar Nueva ArgumentException (8220Set StartInfo. UseShellExecute a false8221) Si (p. StartInfo. RedirectStandardInput ltgt (StandardInput IsNot Nada)) A continuación, tirar Nueva ArgumentException (8220Provide una entrada no nula sólo cuando StartInfo. RedirectStandardInput8221) si (p. StartInfo. RedirectStandardOutput ltgt (StandardOutput IsNot Nada)) a continuación, tirar Nueva ArgumentException (8220Provide una salida no nula sólo cuando StartInfo. RedirectStandardOutput8221) Si (p. StartInfo. RedirectStandardError ltgt (StandardError IsNot Nada)) a continuación, tirar Nueva ArgumentException (8220Provide un error no nulo sólo cuando StartInfo. RedirectStandardError8221) Dim datosSalida Como Nueva InputAndOutputToEndData Dim ErrorData Como Nueva InputAndOutputToEndData Si p. StartInfo. RedirectStandardOutput Entonces


No comments:

Post a Comment