Diagnostics. Process :: Start (StartInfo).WaitForExit Diagnostics. Process :: Start (StartInfo).WaitForExit Hola, Utilizando un script de PowerShell de Home x64 de Vista. Desea iniciar un programa en un bucle y esperar a que salga, tiene muchos parámetros, con argumentos de longitud variable. El programa que estoy intentando lanzar es: hlds. exe - console - insecure - juego svencoop4 - port 27025 - noipx - numedicts 4096 inicio de sesión en maxplayers 12 mapa osprey 1. Esto funciona en la línea de comandos powershell. Hlds. exe - console - insecure - juego svencoop4 - port 27025 - noipx - numedicts 4096 inicio de sesión en maxplayers 12 mapa osprey En un script con un bucle es como un cómic de Disney El aprendiz de hechiceros. 2. Esto debe hacer que espere a esperar..hlds. exe - console - insecure - juego svencoop4 - port 27025 - noipx - numedicts 4096 inicio de sesión en maxplayers 12 mapa osprey out-null El hlds - console se abre, pero hlds. exe se bloquea y no se inicializa. 3. Han recortado los argumentos, parecen estar teniendo problemas con los varios / - argumentos interceptados como operadores unarios. Imprime una advertencia / error e ignora el argumento - console de hlds y el waitforexit entonces loops. StartInfo nuevo-objeto System. Diagnostics. ProcessStartInfo StartInfo. FileName hlds. exe StartInfo. Argumentsquot-consola mapa c1a1 - juego svencoop4quot StartInfo. LoadUserProfile false StartInfo. UseShellExecute false StartInfo. WorkingDirectory (get-location).Path proc System. Diagnostics. Process: : Start (StartInfo).WaitForExit () Basado en mi comprensión, el método de Process. WaitForExit (int32) no significa salir cuando timeout. La sobrecarga WaitForExit (Int32) se utiliza para hacer que el subproceso actual espere hasta que finaliza el proceso asociado. Esta sobrecarga indica al componente Proceso que espere un tiempo finito para que el proceso salga. Si el proceso asociado no sale al final del intervalo porque se deniega la solicitud de finalización, se devuelve false al procedimiento de llamada. Puede especificar un número negativo (Infinito) durante milisegundos. Y Proceso. WaitForExit (Int32) se comportará igual que la sobrecarga WaitForExit Si desea cerrar el proceso, puede utilizar el siguiente código para hacer lo que quiera: Vin Jin MSFT MSDN Comunidad Soporte Comentarios para nosotros Obtenga o solicite un ejemplo de código de Microsoft Recuerde Para marcar las respuestas como respuestas si ayudan y desmarcan si no proporcionan ninguna ayuda. Lunes 20 de Junio de 2011 6:26 Sí, pero no es Process. WaitForExit (Int32) que no funciona. Esta función funciona muy bien con muchos ejecutables. El problema es que esta función no funciona con PsExec y una redirección de salida estándar. Su trabajo sólo sin utilizar la redirección o sin utilizar un tiempo de espera. Lunes 20 de Junio de 2011 6:41 AM No estoy seguro de por qué desea utilizar el trabajo de teclado y por qué desea redirigir sólo cuando se inicia el proceso Pruebe el siguiente código: Para modificarlo como su solicitud. Puede funcionar bien. Aquí está el resultado: Cuanto más tiempo (120000) se establece, más imformation obtendrá. Así que le sugiero que utilice el método process. WaitForExit () sin parámetros. Gracias. Vin Jin MSFT MSDN Soporte de la comunidad Feedback para nosotros Obtenga o solicite un ejemplo de código de Microsoft Recuerde marcar las respuestas como respuestas si las ayudan y las desmarcan si no proporcionan ayuda. Lunes 20 de Junio de 2011 9:42 Gracias por su ayuda. Si uso process. WaitForExit () sin tiempo, su trabajo muy bien y tengo la salida completa. Pero yo uso psexec para ejecutar un kit de instalación remotamente, esta configuración puede congelar el proceso, así que necesito tener un tiempo de espera y no quiero usar la opción - d (no espere a que el proceso termine) porque tengo los próximos pasos para ejecutar después la puesta en marcha. Lunes, 20 de junio de 2011 10:01 AM ¿Qué hay de establecer el tiempo más tiempo Por favor, marque como respuesta, si ayuda a resolver su problema. Miércoles, 22 de junio de 2011 7:07 AM He intentado con 300000, es el mismo comportamiento. Aunque mi proceso de instalación toma menos de 60000 El problema no es la duración del tiempo de espera. El problema es que una redirección de salida estándar y una ejecución con un tiempo de espera congelan el proceso psexec (sólo psexec, no otro.) Miércoles 22 de Junio de 2011 07:19 Hola, sé que este es un post bastante antiguo, pero tuve Ese mismo error al intentar ejecutar un proceso utilizando el WaitFor () 43 RedirectStandardOutput y se bloqueará indefinidamente. Encontré una solución a mi problema en un blog de Lucian Wischik, MSFT. Si no ha encontrado una solución, o cualquier otra persona que busca ese problema en particular debe echar un vistazo a esta dirección: Aquí está una copia de su código traducido aproximadamente en C. Miércoles 30 de Noviembre de 2011 22:23 Microsoft está llevando a cabo 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 participar? Tu solución no necesita AutoResetEvent pero encuestas. 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. Respondió Jan 13 15 at 10:35 Ejemplo de uso Implementación
No comments:
Post a Comment