Thursday 9 November 2017

Waitforexit Esempio C # Codifica


Elina: Grazie per la risposta. Ci sono alcune note in fondo questo documento MSDN (msdn. microsoften-uslibraryhellip) che mettere in guardia sui potenziali deadlock se si legge alla fine di entrambi stdout e stderr ruscelli sincrono. It39s difficile dire se la soluzione è suscettibile di questo problema. Inoltre, sembra che si sta inviando l'uscita stdoutstderr processo39 terzino destro come input. Perché. ) Ndash Matthew Piatt 26 settembre 16 a 4:42 Questa è una awaitable più moderno, Task Parallel Library (TPL) soluzione basata per 4.5 e superiori. Esempio di utilizzo Attuazione risposto 5 16 ottobre alle 10:54 ho cosa che questo è semplice e l'approccio migliore (Non abbiamo bisogno AutoResetEvent): risposto 14 Giugno 12 in 14:29 Vero, ma shouldn39t essere fai. FileName Percorso quotggsci. exequot quot lt obeycommand. txtquot per semplificare il codice troppo O forse qualcosa di equivalente a quotecho comando quot Percorso quotggsci. exequot se davvero don39t desidera utilizzare un file obeycommand. txt separato. ndash Amit Naidu 4 giugno 13 alle 22:03 La soluzione non ha bisogno AutoResetEvent ma sondaggio. Quando si esegue sondaggio invece di utilizzare evento (quando sono disponibili), quindi si utilizza CPU senza motivo e che indica che sei un programmatore male. La soluzione è davvero male se confrontato con l'altro utilizzando AutoResetEvent. (Ma io non do -1 perché si è tentato di aiutare). ndash Eric Ouellet 7 novembre 14 a 18:38 mi stava avendo lo stesso problema, ma il motivo era diverso. Sarebbe tuttavia accadere in Windows 8, ma non sotto Windows 7. La seguente riga sembra aver causato il problema. La soluzione era quella di non disabilitare UseShellExecute. Ho ricevuto ora una finestra di popup Shell, che è indesiderato, ma molto meglio rispetto al programma in attesa di nulla di particolare per accadere. Così ho aggiunto il seguente work-around per questo: Ora l'unica cosa che mi dà fastidio è il motivo per cui questo accade in Windows 8, in primo luogo. risposto 13 Gennaio 15 alla 10:35 Ho provato a fare una classe che avrebbe risolto il problema utilizzando asincrono flusso di lettura, prendendo in considerazione Mark Byers, Rob, risposte stevejay. In questo modo mi sono reso conto che c'è un bug relativo al processo asincrono flusso di output di lettura. Non puoi farlo: Riceverete System. InvalidOperationException. StandardOut non è stato reindirizzato o il hasnt processo avviato ancora. Poi si deve avviare l'uscita asincrono leggere dopo il processo è iniziato: In questo modo, fare una condizione di competizione, perché il flusso di uscita in grado di ricevere i dati prima di impostare a asincrona: Poi alcune persone potrebbero dire che basta leggere il flusso prima di impostarlo asincrona. Ma lo stesso problema si verifica. Ci sarà una condizione di competizione tra il sincrono letto e impostato il flusso in modalità asincrona. Non vi è alcun modo per acheive sicura lettura asincrono di un flusso di output di un processo nel processo reale strada e ProcessStartInfo è stato progettato. Probabilmente si sta meglio utilizzando lettura asincrono come suggerito da altri utenti per il vostro caso. Ma si deve essere consapevoli che si potrebbe perdere un po 'di informazioni a causa di condition. Lets da corsa leggere ciò che dice di MSDN su di esso: The WaitForExit) () () 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

No comments:

Post a Comment