Oppure

Loading
20/10/09 8:43
swet
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:
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
aaa
20/10/09 9:03
theprogrammer
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.

aaa
20/10/09 9:26
swet
ciao e grazie della risposta,
l' istruzione seguente
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 20/10/09 9:27
aaa
20/10/09 9:34
theprogrammer
Ok ... e ti chiedo io ... perche'? Cosa fai dopo con il tuo codice che non va se la cartella non la vedi?
aaa
20/10/09 10:08
swet
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.
Dim processo As System.Diagnostics.Process
            processo = New Process()
            processo.StartInfo.FileName = (percorso)
            processo.Start()
            processo.WaitForExit()
            processo.Close() 

Ultima modifica effettuata da swet 20/10/09 10:29
aaa
20/10/09 13:21
theprogrammer
Postato originariamente da swet:

Non so quanto puoi aver capito!! :):)



Quasi nulla ...
aaa
20/10/09 13:30
swet
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?!
aaa
20/10/09 13:47
theprogrammer
Se scrivi

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.
aaa