swet (Normal User)
Pro
Messaggi: 128
Iscritto: 01/01/2009
|
Buongiorno a tutti, sapete se esiste un modo per stoppare l' applicazione dopo un' istruzione e sbloccarla appena questa è stata completata?
ad esempio: vorrei che la mia applicazione esegua questo codice:
Codice sorgente - presumibilmente Plain Text |
System.Diagnostics.Process.Start(percorso)
|
e solo quando il percorso risulta aperto continuare con l' esecuzione del codice.
Ho provato anche con i thread di vb.net ma ritarda anche l' apertura del file ( stoppa l' intera applicazione) oppure sbaglio io qualcosa? GRAZIE
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Ovvero ... spiegati meglio. Quale programma stai facendo partire in dettaglio? Perche' hai problemi? Cosa succede?
Se proprio e' necessario, dopo lo Start, fai un elenco dei processi attivi finche' non trovi il tuo. In quel caso , sei sicuro che il processo e' partito.
|
|
swet (Normal User)
Pro
Messaggi: 128
Iscritto: 01/01/2009
|
ciao e grazie della risposta,
l' istruzione seguente
Codice sorgente - presumibilmente Plain Text |
System.Diagnostics.Process.Start(percorso)
|
lancia l' apertura di una cartella. Io vorrei che prima di passare all'istruzione successiva si fosse certi che la cartella risulti aperta, come faccio?
Ultima modifica effettuata da swet il 20/10/2009 alle 11:27 |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Ok ... e ti chiedo io ... perche'? Cosa fai dopo con il tuo codice che non va se la cartella non la vedi?
|
|
swet (Normal User)
Pro
Messaggi: 128
Iscritto: 01/01/2009
|
Sto sviluppando un programma che consente di mettere la password ad una cartella che avevo iniziato qualche mese fa. All' avvio il programma attiva un timer nel quale controlla l' apertura della cartella ( attraverso l' handle),se viene aperta chiede la password, se la password è corretta, stoppa questo primo timer e ne avvia un' altro che controlla sempre attraverso l' handle quando la cartella viene chiusa(handle = 0) e, quindi fa ripartire nuovamente il primo timer che chiede la password.
L' apertura della cartella la gestisco tramite quel codice, subito dopo l' apertura della cartella si attiva il secondo timer che dovrebbe controllare quando l' handle = 0 ( per far partire il primo timer( verifa password)) questo però non avviene ! La cartella si apre e si richiude subito chiedendo la password, evidentemente non riesce ad aprire la cartella prima dell' istruzione che fa partire il primo timer.
Non so quanto puoi aver capito!!
Girovagando per internet ho trovato la funzione WaitForExit che forse fa al caso mio, ovvero attende la chiusura della cartella prima di far partire nuovamente il primo timer( controllo della password) eliminando quindi il secondo timer.
Usando questo codice, alla riga processo.waitforexit mi restituisce: Nessun processo associato all'oggetto.
Codice sorgente - presumibilmente C# / VB.NET |
Dim processo As System.Diagnostics.Process
processo = New Process()
processo.StartInfo.FileName = (percorso)
processo.Start()
processo.WaitForExit()
processo.Close()
|
Ultima modifica effettuata da swet il 20/10/2009 alle 12:29 |
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da swet:
Non so quanto puoi aver capito!!
|
Quasi nulla ...
|
|
swet (Normal User)
Pro
Messaggi: 128
Iscritto: 01/01/2009
|
Immaginavo! Lasciando stare tutto il discorso dei timer, ho capito che forse potrei risolvere il tutto attraverso la funzione WaitForExit() solo che non riesco a farla funzionare!
Dim processo as System.Diagnostics.Process
processo = new Process()
processo.StartInfo.FileName = (percorso)
processo.Start()
processo.WaitForExit()
processo.Close()
con questo codice mi restituisce: Nessun processo associato all'oggetto ( alla riga di waitforexit )
mentre con quest' altro : Riferimento a un oggetto non impostato su un'istanza di oggetto.
Process1.Start("c:\prova").WaitForExit()/code]
Potete aiutarmi?!
|
|
theprogrammer (Normal User)
Guru^2
Messaggi: 2509
Iscritto: 28/01/2009
|
Se scrivi
Codice sorgente - presumibilmente C# / VB.NET |
Dim processo As Process = System.Diagnostics.Process.Start("C:\prova")
processo.WaitForExit()
|
e, ovviamente, la cartella c:\prova esiste, allora questa viene aperta.
Ma la WaitForExit blocca il programma finche' non viene chiusa la cartella stessa, che non mi pare fosse quello che volevi.
|
|
swet (Normal User)
Pro
Messaggi: 128
Iscritto: 01/01/2009
|
La WaitForExit attende che si chiuda la cartella per poi continuare a eseguire il codice giusto? Se è così mi basta mettere l' istruzione per far partire il timer che controlla l' accesso subito dopo la waitforexit e ho risolto i problemi(spero). Il problema è che non riesco a far funzionare la waitforexit!!!!
|
|