Waitforexit Namespace C Processo #


In applicazione console, Windows 10, Visual Studio 2015. NET 4.6 chiamo metodo unico nel Main chiamato TestProcess. Costruire la modalità di debug, se corro app senza il debug di esso stampa testo corretto: Premere un tasto qualsiasi per continuare. Se corro app con il debug attende per 3 secondi prima di stampare errore Falso Falso Falso Questa è solo una semplificazione del problema reale, questo codice è la spina dorsale di un codice complesso che pende anche in versione senza debug per md5sums. exe, ma funziona per qualche altra programmi. Codice Coplex anche pende anche su var a proc. WaitForExit (timeout) fino timeout come nell'esempio allegato. D'altra parte questa semplificazione funzionerà in versione senza debugger. Inoltre, tutti questi problemi sono iniziati con Windows 10, su Windows 7 tutto ha funzionato bene. EDIT riesco a capire il motivo per cui sarebbe md5sums. exe causare problemi, e se uso qualcos'altro es. FileName ping, Argomenti localhost tutto funziona come previsto. EDIT2 mio programma complesso ha smesso di funzionare su Windows 10 (uscita - eseguito senza il debug), ma questo esempio si blocca su Windows 7 anche (Debug - Eseguire con il debug) ha chiesto 17 Maggio 16 anni al 13:21 Questo problema ha una soluzione molto semplice. Si può sempre e solo scoprire che quando si scrive un messaggio di errore significativo, uno che dà l'utente del programma di un buon suggerimento che cosa è andato storto. Una buona regola non viene mai usare un timeout meno di 10 secondi su un PC workstation, 20 secondi su un server. Aggiungere più se si tratta di un programma quotcomplexquot. ndash Hans Passant 17 Maggio 16 alle 14:01 programma complesso HansPassant ha timeout in giorni :) 20 secondi timeout didn39t comportamento cambiamento per questo esempio, anche se test. txt è il file con una sola breve riga di testo e Console. WriteLine (quotError: 39 39, 39 39quot) ha restituito quotError: 3939, 3939. a, B e C sono tutte false quando non riesce. Cosa sarebbe il messaggio di errore significativo sia ndash watbywbarif 17 16 maggio alle 14:29 C'erano 3 catture per risolvere questo: md5sums. exe in alcuni casi, si ferma l'esecuzione dopo finito quando ha lanciato con le mie impostazioni: Premere ENTER per uscire da questa si può osservare se CreateNoWindow è impostato su false e stdout, stderr reindirizzamento rimosso. Questo può essere risolto utilizzando l'opzione - e: Exit dont immediatamente di pausa prima di tornare. Ciò risolverà tutti i casi. Ma, come non usufruiti - e ho avuto un comportamento incoerente a seconda del debugger e Windows versione. Quando si esegue senza il debug di pausa non è stato licenziato, anche se tutte le impostazioni fossero uguali, e premere INVIO per uscire non era in uscita. Ma in esecuzione con il debug causato una pausa per bloccare programma fino al timeout, dove md5sums si bloccano nel task manager in attesa di Invio. In modalità di rilascio, eseguito senza errori, anche se la pausa licenziato e premere INVIO per uscire era in uscita su Windows 7 md5sums restituiti ed esecuzione continuato senza bloccare e colpire timeout. Questo non era caso su Windows 10, dove md5sums vivrebbero in compito mangiatoia, in attesa di Invio e il programma prosegue dopo aver colpito timeout. ha risposto 18 Maggio 16 ad 11: 16Lets leggere ciò che dice di MSDN su di esso: The WaitForExit () () () di sovraccarico è usato per fare la corrente di attesa filo fino a quando il processo associato termina. Questo metodo indica al componente del processo di aspettare una quantità infinita di tempo per il processo per uscire. Ciò può causare un'applicazione per bloccarsi. Ad esempio, se si chiama CloseMainWindow per un processo che ha un interfaccia utente, la richiesta al sistema operativo per terminare il processo associato potrebbe non essere gestita se il processo viene scritto mai entrare nel suo ciclo di messaggi. Questo sovraccarico assicura che tutta l'elaborazione è stata completata, compresa la gestione di eventi asincroni per standard output reindirizzato. Si dovrebbe usare questo sovraccarico dopo una chiamata al sovraccarico WaitForExit (Int32) quando l'uscita standard è stato reindirizzato a gestori di eventi asincroni. Questo è, naturalmente, per. Cosa ti fa pensare che non aspetta il processo di nota per finire Quali sono i segni di che cosa è la prova Venerdì 20 Febbraio 2009 20:13 Non sono sicuro se questo è cambiato di recente, ma di nuovo nelle applicazioni al giorno sulla finestra mobili mai veramente chiusa quando si colpisce la X per chiudere loro, avrebbero solo ridurre al minimo e mantenere in esecuzione in background (questo non è stato un errore, è stata una caratteristica, dal momento che la prossima volta che si avvia l'applicazione sarebbe iniziato veramente veloce, yah lo so, folle ma vero), in modo che potrebbe essere il motivo per cui WaitForExit è forse comporta in modo strano e di attesa per l'avvio dell'applicazione, invece di uscire. ma poi di nuovo è solo speculazione sulla base di knowlegde delle antiche versioni di Windows Mobile. Venerdì 20 Febbraio 2009 23:03 Id piace urtare questa domanda in su. Im su Windows Mobile 6 Standard e Im cercando di generare una istanza del browser. Id piace aspettare fino a quando l'utente chiude il browser. Ma WaitForExit ritorna estremamente veloce. Ecco il codice: p nuovo Process () p. StartInfo. Arguments quotexample-sitequot p. StartInfo. Verb quotOpenquot p. StartInfo. UseShellExecute falso p. StartInfo. FileName quotIExplore. exequot p. Start) p. WaitForExit () MessageBox (.Show (quotNow il browser dovrebbe essere closedquot) Quale dovrebbe essere il modo giusto per ottenere i resuts attesi lunedì, giugno 08, 2009 22:45 Dove simbolo è. simbolo. AlexB Martedì 9 Giugno 2009 21:58 Im vedere lo stesso problema, ma su XP. Credo che la prova può essere visto in qualsiasi debugger (come sto vedendo), o in qualsiasi applicazione di console (non necessariamente sul cellulare) Mercoledì 2 Settembre 2009 20:35 Solo che tu non poi ottenere un oggetto processo che è possibile uso. Se si tenta myProc fioco come nuovo processo () myProc Process. Start (quotiexplorequot, simbolo quotfinance. yahooqhpsquot) myProc. WaitForExit () Riporta ancora immediatamente. Mercoledì 2 settembre 2009 20:48 Il problema è che non si sta iniziando una nuova istanza di iexplore. exe. Stai solo la creazione di una nuova finestra sul processo esistente. La mia ipotesi è inizia iexplore. exe, vede un'istanza precedente e comunica con l'istanza precedente in modo che si apre la nuova finestra, e quindi questo caso è iniziata immediatamente uscite. Così il comportamento è corretto e prevedibile. blog. voidnish Mercoledì 2 settembre 2009 20:52 Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione del sito Web MSDN. Se si sceglie di partecipare, il sondaggio on-line sarà presentato a voi quando si lascia il sito Web MSDN. Ti piacerebbe partecipare

Comments