Skip to main content

No Process Is Associated With This Object Waitforexit


C (C Sharp) gtInvalidOperationException en Process. WaitForExit El requisito es detectar el cierre de un documento de palabra abierto por un proceso. Hay algún pedazo de código que tiene que ser ejecutado después de que el documento está cerrado. Utilizando el documento Process. Start () se abre, he utilizado process. WaitForExit () para detener la ejecución hasta que el documento se cierra. Pero una vez que el documento está cerrado, Process. WaitForExit () lanza InvalidOperationException-Ningún proceso está asociado a la excepción de objeto. Incluso al usar process. Haited propiedad / process. WaitForInputIdle (), se produce la misma excepción. Esta excepción se genera durante la versión así como el modo de depuración. Cualquier idea de por qué esta excepción ocurre el 6 de septiembre, 9:18 am, Sangeetha ltSangee. Discussions. microsoftgt escribió: gt El requisito es detectar el cierre de un documento de palabra abierto por un proceso. Gt Hay algo de código que debe ejecutarse después de que el documento esté cerrado. Gt gt Usando el documento Process. Start () se abre, he utilizado process. WaitForExit () para detener la ejecución adicional hasta que el documento se cierra. Gt gt Pero una vez que el documento está cerrado, Process. WaitForExit () lanza gt quotInvalidOperationException-Ningún proceso está asociado a la excepción objectquot. Gt gt Incluso al usar process. Haited propiedad / process. WaitForInputIdle (), se genera la misma excepción gt. Gt gt Esta excepción se activa durante la versión y el modo de depuración. Gt gt Cualquier idea de por qué se produce esta excepción. No creo que esté esperando la variable de proceso correcta. Asegúrese de que no se olvide de asignar el resultado de Process. Start () a una variable del tipo Process. Proceso p1 nuevo Process () Proceso p2 Process. Start (quotnotepad. exequot) p1.WaitForExit () lt-- lanzará p2.WaitForExit () lt-- no lanzará. o. P1.StartInfo nuevo ProcessStartInfo (quotnotepad. exequot) p1.Start () p1.WaitForExit () lt - no throwI tiene un servicio de Windows que contiene este código: El propósito de este código se ejecuta un extracto de IFilter en un documento, que utilizamos Un proceso separado porque algunos IFilters son notoriamente escamosos. Ahora este código se ejecuta perfectamente bien en los cuadros de Windows 7 y Server 2008 R2 pero en un Windows Server 2003 el WaitForExit lanza inmediatamente un No hay ningún proceso asociado con esta excepción de objeto de proceso. El proceso existe y completa su tarea sin ningún problema. Cualquier persona que se ve esto ¿Puede alguien arrojar alguna luz sobre por qué WaitForExit thow este error Si coloco este código en una aplicación de consola y ejecutarlo funciona bien en el Windws Server 2003 cuadro, así, por lo que parece ser un problema específico corriendo esto en Un servicio en un cuadro de Windows Server 2003. El error ocurre cuando usted don39t consigue un MANIJA al proceso (por lo tanto no puede esperarlo). Asegúrese de que está especificando UseShellExecutefalse, para evitar la reutilización de un proceso. También puede describir el bitness 32 vs 64 del servicio frente al ejecutable Finalmente intente Process Monitor y vea lo que muestra sucediendo. Ndash Ben Feb 2 12 at 12:51 ben: I39ll dar UseShellExecutefalse una oportunidad. Bitness es un buen punto. El servidor de Windows 2003 es un servidor de 32 bits, de modo que tanto el servicio como el ejecutable funcionan como 32 bits. Sin embargo, las máquinas Windows 7 ans 2008 R2 son de 64 bits y tanto el servicio como el ejecutable funcionan como 64 bits. Así que podría ser esta es la diferencia no la versión del sistema operativo. Ndash AnthonyWJones Feb 2 12 at 14:33 Al iniciar procesos, con la clase System. Diagnostics. Process, el sistema puede utilizar CreateProcess o ShellExecuteEx Win32 función. Cuando se utiliza CreateProcess sólo se pueden iniciar los archivos ejecutables. Cuando se utiliza ShellExecuteEx. Cualquier archivo que se pueda iniciar con el comando Start-Run del shell. Sin embargo, estas son formas completamente diferentes de iniciar procesos. ShellExecuteEx implica el shell y, por ejemplo, puede volver a utilizar una instancia existente de Word o Excel para abrir un documento utilizando la información almacenada bajo la clave del Registro HKCRltprogidgtshellltverbgt. Esto puede implicar, por ejemplo, utilizar DDE para buscar y activar una instancia de Excel existente. Vea la documentación en SHELLEXECUTEINFO de ShellExecuteEx. Tenga en cuenta que ShellExecuteEx puede o no devolver un hProcess dependiendo de si se inició un nuevo proceso. Este es el comportamiento que usted está viendo. CreateProcess es una función de nivel inferior y crea un proceso directamente, y simplemente pasa los argumentos equivalentes. Siempre devuelve un identificador de proceso. Nota: Ya que parece que está iniciando un archivo ejecutable, es un poco sorprendente que no hProcess es devuelto por ShellExecuteEx. Sin embargo, si usted quiere asegurarse de que obtiene un identificador de proceso, utilizando UseShellExecute falso es lo correcto para do. I iniciar proceso como este ////////////////////// ////////////////////////////////////////////////// //////////////////////////////////// System. Diagnostics. Process SetupGUIProcess nuevo System. Diagnostics. Process () SetupGUIProcess. StartInfo nuevo System. Diagnostics. ProcessStartInfo (strStartMenuPath quotProgramsAXYZ InternationalA2MC Setup. appref-msquot) SetupGUIProcess. Start () SetupGUIProcess. WaitForExit () ///////////////////// ////////////////////////////////////////////////// //////////////////////////////////// Cuando el programa llega a la línea WaitForExit causa una excepción quotNo Process Está asociado con este objeto. El proceso comienza bien. Estoy intentando conseguir el hilo que llama para bloquear hasta que se salga el proceso. ¿Es este el camino correcto? Jueves, 01 de octubre de 2009 20:31 Respuestas Permite pulsar el botón de reinicio muy rápido. Ok, ahora quieres hacer esto: 1. Instala la aplicación (véase el artículo del proyecto de código sobre cómo usar msiexec para hacerlo). Utilice Process (// ExecuteableOnCodeProject). 2. Espere a que la aplicación finalice la instalación utilizando Process. WaitOne 3. Inicie Executeable como otro proceso (// exe instalado recientemente). 4. WaitForProcess () (// Nombres ejecutables proceso. Y usted tiene el código fuente. Ya, todo lo que necesita hacer es crear el msi e instalarlo utilizando la técnica anterior. No voy a pasar por todo el proceso de instalación de un MSI porque no puedo hacer un trabajo tan bueno como lo hace el artículo en la explicación de una cosa. No complicar esto. Siga las instrucciones y leer el artículo. Esto no va a ser copiar y pegar, pero eso es por qué te pagan los grandes dólares Right Buena codificación implica conocer los límites lógicos y ampliarlos según sea necesario Marcado como respuesta por Bin-ze Zhao Lunes 05 de Octubre de 2009 8:16 AM Viernes 02 de Octubre de 2009 21:25 Todas las respuestas Parece que el código correcto No estoy seguro de lo que podría estar mal, a menos que el proceso que está iniciando sólo comienza otro y luego termina, lo que significaría que el proceso al que hace referencia su SetupGUIProcess habría terminado / no existe más y WaitForExit podría entonces ser ilegal. Como alternativa, Tal vez WaitForExit no es válido cuando algo se abre a través de una asociación, en lugar de abrir un programa específico. Y el nombre de archivo que has especificado no parece un exe (aunque podría serlo). Jueves, 01 de octubre de 2009 8:55 PM Puede iniciar una aplicación ClickOnce especificando la ubicación (por ejemplo, una dirección Web) desde la que instaló originalmente la aplicación. No inicie una aplicación ClickOnce especificando su ubicación instalada en su disco duro. Por lo tanto, no debería ser capaz de hacer esto especificando el archivo de referencia de la aplicación, debe especificar la ubicación del archivo url / original para iniciar el proceso. Puede ver esta ubicación abriendo el archivo appref-ms con un editor de texto. Jueves, 01 de octubre de 2009 21:00 Estoy seguro de que el proceso todavía se está ejecutando en el momento en que se llama WaitForExit. Realmente me doy cuenta de que estoy iniciando el proceso por medio de una referencia clickonce. He intentado esto en todas las diversas maneras que usted puede comenzar un proceso y la misma excepción ocurre. Si comienzo el proceso simplemente pasando la ruta de inicio (). Start devuelve null. ¿Hay otra manera de iniciar una aplicación que se instala por un escudo de instalación clickonce otro que por la referencia estaría interesado en ver si podía llamar al exe directamente. Tal vez entonces la función WaitForExit sabría el objeto de proceso. Esto es desconcertante. Gracias por la respuesta Thursday, October 01, 2009 9:04 PM Hemos pasado por esto antes en su hilo anterior. Deje de usar ClickOnce. Hans Passant. Viernes, 02 de Octubre de 2009 12:09 Estoy teniendo un pequeño problema poniendo todo esto. Supongo que no entiendo esta declaración en el enlace al primer artículo que me dio en el otro post: No tengo un servidor. Sólo quiero enviar a la gente 2 instalar sheilds comprimido. Lo instalan. Y uno de los programas instalados puede llamar al otro como un proceso y luego bloquear y esperar hasta que se hace. Todavía no está claro para mí lo que tengo que hacer para que pueda llamar al programa usando el sytax anterior. ¿Necesito un separador para hacer esto? Cuando usted dice que deje de usar ClickOnce. ¿Quieres decir dejar de llamarlo por su referencia o quiere decir dejar de usarlo en absoluto y utilizar algún otro método de deplayment Supongo que realmente no entiendo lo que hace Click Once. ¿El término Click Once encapsula el significado de todos los escudos de instalación mediante la opción publicar en Visual Studio? Espero que veas lo que estoy luchando. Tiene que haber algo simple aquí estoy desaparecido. Friday, October 02, 2009 2:29 PM Estoy totalmente de acuerdo con NoBugz (que muy probablemente entiende esto mejor que yo). Así que vamos a pensar en esto tú y yo. Cuando visitas una URL, no disparas un proceso en vivo. Usted pide al servidor algunos datos y devuelve algunos datos y luego su fuera de su vida. Theres ningún estado persistente como un proceso que usted puede tener acceso. Su tratar de usar una aplicación clickOnce que utiliza una URL por lo que por supuesto no hay ningún proceso debido a exactamente lo que acabo de pasar. Deje de usar ClickOnce. Friday, October 02, 2009 2:37 PM Uh Sé que ustedes están tratando de ayudar y lo aprecio pero todavía no lo entiendo. Me podría importar menos lo que sucede cuando visite una URL y como he dicho antes no sé lo que quieres decir cuando dices dejar de hacer clic una vez. Si va a hacer un comentario como el que podría sugerir una alternativa. Sólo quiero dar a alguien una manera de instalar dos programas que hice y llamar a uno de los demás y bloquear el proceso de llamada hasta que el proceso llamado vuelve. Parece haber algún tipo de diferencia entre lo que estoy tratando de hacer y lo que ustedes están tratando de explicar. Me siento como los dos puestos que he hecho se han desviado tan lejos de mi problema real. Por favor, alguien puede romper esto en una especie de sencillos términos o pasos Tal vez algo como esto Paso 1 --------- Crear una aplicación instalable como este Paso 2. ---------- Llámelo Como este viernes, 02 de octubre de 2009 3:43 PM No estoy de acuerdo en que los mensajes se desvían de su pregunta. Su ejemplo utiliza ClickOnce, el único problema que su experiencia se debe al hecho de que está utilizando ClickOnce. Es por eso que la gente dice. Deje de usar clickOnce. Quizás usted no entiende qué ClickOnce es contra un ejecutable Éste es un ejemplo muy simple de exactamente qué usted está intentando hacer SIN clickonce. Ahora, si usó un MSI y ejecute msiexec. exe para instalar la aplicación primero (use WaitForExit para que finalice si tiene algún problema ver el enlace codeproject para una alternativa), entonces Después de que el proceso termine de ejecutar el archivo EXE de los procesos, en ese momento debería ser capaz de llamar a WaitForExit () para su programa recién instalado. Si desea comprobar las versiones existentes de la aplicación, entonces su obtener un nivel más complicado y debe mirar a esta muestra codeproject. Viernes, 02 de octubre 2009 17:05 Gracias de nuevo por la respuesta. Entiendo lo que dices. Todo el problema es porque estoy llamando al clic una vez referencia y no un exe real. Tengo un par de preguntas. 1. ¿Es el clic una vez referenciando un exe que me gustaría llamar al exe. Simplemente no puedo encontrar en cualquier parte del sistema su intalled. ¿Hay una ruta de acceso específica donde se coloca cuando se ejecuta un clic de publicación un escudo de instalación 2. Si la respuesta a la pregunta anterior es no. Entonces esto se convierte en un problema de instalar la primera aplicación con el proceso exe que estoy tratando de llamar y todas sus dependencias Gracias por su paciencia Viernes 02 de Octubre de 2009 17:12 Gracias de nuevo por la respuesta. Entiendo lo que dices. Todo el problema es porque estoy llamando al clic una vez referencia y no un exe real. Tengo un par de preguntas. 1. ¿Es el clic una vez referenciando un exe que me gustaría llamar al exe. Simplemente no puedo encontrar en cualquier parte del sistema su intalled. ¿Hay una ruta de acceso específica donde se coloca cuando se ejecuta un clic de publicación un escudo de instalación 2. Si la respuesta a la pregunta anterior es no. Entonces esto se convierte en un problema de instalar la primera aplicación con el proceso exe que estoy tratando de llamar y todas sus dependencias Gracias por su paciencia Don Hay un problema lógico con sus preguntas. 1. Supongamos que sabía dónde estaba el exe. Lo lanzaste con un proceso. De acuerdo con 2 hay dependencias, por lo tanto, su programa sopla. Cómo arreglar esto Necesita instalar el programa antes de intentar ejecutar el exe. Así que lo que hace Usted necesita para localizar el archivo original de la solución de programas para Visual Studio y crear un paquete de instalación y busto hacia fuera como un archivo MSI. A continuación, puede utilizar la técnica que publiqué anteriormente para instalar el paquete y ejecutarlo. Problema: Si usted necesita instalar el paquete, usted no tiene el código fuente (que es porqué yo asumiría que usted sigue intentando usar un clickonce), entonces usted es esencialmente muerto en el agua con sus requisitos. Ninguna epopeya de la fuente falla. Friday, October 02, 2009 5:33 PM Lo siento, no lo entiendo. Leta ir paso a paso. Su comentario 1. Supongamos que sabía dónde estaba el exe. Lo inició con un proceso. De acuerdo con 2 hay dependencias, por lo tanto, su programa sopla. Cómo arreglar esto Necesita instalar el programa antes de intentar ejecutar el exe. My Commemt Supongamos que no sé dónde está el exe (porque no) porque no parece ser uno después de instalar el clic una vez instalar el escudo. Si hay otra manera de hacer un sheild de la instalación de modo que tenga acceso a un exe. Puede proporcionar el enlace a la documentación que muestra cómo hacerlo Necesita encontrar el archivo de solución de programas original para Visual Studio y crear un paquete de instalación y eliminarlo como un archivo MSI. A continuación, puede utilizar la técnica que publiqué anteriormente para instalar el paquete y ejecutarlo. Mi comentario Tengo el archivo original de la solución de los programas para el estudio visual desde que soy el autor. Si creé un paquete del instalador de MSI y busto hacia fuera como archivo del MSI como usted dice entonces podré llamar el exe para arriba como proceso ¿Dónde estará localizado? ¿Puede usted proporcionar el acoplamiento a la documentación en cómo crear el MSI si De hecho, se instalará un exe Problema: Si necesita instalar el paquete, usted no tiene el código fuente (que es la razón por la que supongo que seguir intentando usar un clickonce), entonces usted está esencialmente muerto en el agua con sus necesidades. Ninguna epopeya de la fuente falla. Mi comentario Tengo absolutly el código fuente y el proyecto. La razón por la que estoy usando el click una vez es porque parecía ser fácil para mis clientes instalar mi aplicación con todas las depencias. Así que tengo todos estos clientes con mi aplicación instalada utilizando el método de clic una vez. Ahora todo lo que quiero hacer es escribir otra aplicación con un botón que llama a la primera y espera hasta que termine. Es la clave de este embalaje realmente la primera aplicación (la que quiero llamar) como un archivo msi Gracias de nuevo por su paciencia Viernes 02 de Octubre de 2009 21:00 Lets golpear el botón de restablecimiento real rápido. Ok, ahora quieres hacer esto: 1. Instala la aplicación (véase el artículo del proyecto de código sobre cómo usar msiexec para hacerlo). Utilice Process (// ExecuteableOnCodeProject). 2. Espere a que la aplicación finalice la instalación utilizando Process. WaitOne 3. Inicie Executeable como otro proceso (// exe instalado recientemente). 4. WaitForProcess () (// Nombres ejecutables proceso. Y usted tiene el código fuente. Ya, todo lo que necesita hacer es crear el msi e instalarlo utilizando la técnica anterior. No voy a pasar por todo el proceso de instalación de un MSI porque no puedo hacer un trabajo tan bueno como lo hace el artículo en la explicación de una cosa. No complicar esto. Siga las instrucciones y leer el artículo. Esto no va a ser copiar y pegar, pero eso es por qué te pagan los grandes dólares La buena codificación implica conocer los límites lógicos y ampliarlos según sea necesario Marcado como respuesta Bin-ze Zhao Lunes, 05 de Octubre de 2009 8:16 PM Viernes, 02 de Octubre de 2009 21:25 Microsoft está realizando una encuesta en línea para entender Su opinión sobre el sitio web de Msdn Si decide participar, la encuesta en línea se le presentará cuando abandone el sitio Web de Msdn.

Comments

Popular posts from this blog

Wa Forex Piratage Compte

Buscar en el foro Facebook Forex Trading System forex forex piratage facebook facebook forex piratage facebook Encuentra forex piratage facebook Forex Trading Service website Forex Trading System forex piratage facebook facebook forex piratage facebook Encuentra forex piratage facebook Forex Trading en línea servicio web wa forex Piratage facebook Buscar wa forex piratage facebook Sitio web del servicio de Forex Trading en línea Forex Trading System facebook facebook forex piratage facebook Buscar forex piratage facebook Sitio web del servicio de Forex Trading en línea Forex Trading System facebook forex piratage facebook Encuentra wa forex piratage facebook En línea Si usted es nuevo en el comercio de divisas, ¿sabe qué tipos de indicadores técnicos son para qué tipos de operaciones Y si ya eres un comerciante de la divisa con experiencia, ¿es usted Utilizando las combinaciones correctas de indicadores técnicos para ayudarle a obtener...

Independent Forex Trader Salary Chicago

El salario de un comerciante de divisas El comercio de divisas es una habilidad que es difícil para la mayoría de la gente a comprender. Hemera Technologies / AbleStock / Getty Images Antes de obtener demasiado entusiasmados con los ingresos impresionantes que puede hacer como un comerciante de divisas, tenga en cuenta el estilo de vida requerido de los que hacen su vida las monedas de comercio. El mercado abre a las 5 am del lunes por la mañana, hora de Australia, y cierra a las 5 p. m. el viernes por la noche, tiempo de Nueva York, y cada mesa de negociación es probable que trabajar en cambia de trabajo constantemente. Se le paga para vivir una vida que consiste en negociar o dormir y poco más. La compensación salarial consiste en un salario base más un bono basado en sus años de negociación en su empresa y los beneficios comerciales que hizo durante el período de bonificación. Un comerciante de primer año puede esperar una base anual de poco más de 64.000 con un bono que trae una co...