Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.net] Attendere il completamento dell' istruzione precedente
Forum - C# / VB.NET - [vb.net] Attendere il completamento dell' istruzione precedente

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 10:43
Martedì, 20/10/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

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


PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:03
Martedì, 20/10/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.



- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 11:26
Martedì, 20/10/2009
ciao e grazie della risposta,
l' istruzione seguente
Codice sorgente - presumibilmente Plain Text

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


PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:34
Martedì, 20/10/2009
Ok ... e ti chiedo io ... perche'? Cosa fai dopo con il tuo codice che non va se la cartella non la vedi?


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 12:08
Martedì, 20/10/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

  1. Dim processo As System.Diagnostics.Process
  2.             processo = New Process()
  3.             processo.StartInfo.FileName = (percorso)
  4.             processo.Start()
  5.             processo.WaitForExit()
  6.             processo.Close()



Ultima modifica effettuata da swet il 20/10/2009 alle 12:29


PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 15:21
Martedì, 20/10/2009
Testo quotato

Postato originariamente da swet:

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




Quasi nulla ...


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 15:30
Martedì, 20/10/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?!


PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 15:47
Martedì, 20/10/2009
Se scrivi

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim processo As Process = System.Diagnostics.Process.Start("C:\prova")
  2. 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.


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
swet (Normal User)
Pro


Messaggi: 128
Iscritto: 01/01/2009

Segnala al moderatore
Postato alle 15:52
Martedì, 20/10/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!!!!


PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo