mitor (Normal User)
Pro
Messaggi: 73
Iscritto: 01/08/2007
|
ciao a tutti,
la mia domanda è semplice...
mettiamo il caso che debba verificare
alcuni dati e scrivere in una list box il tutto...un codice di sto tipo:
Dim A As String
Dim B As String
If My.Computer.FileSystem.FileExists("c:\test.txt") = True Then
ListBox1.Items.Add("Il File test.txt è stato rilevato")
ListBox1.Items.Add("Il File test.txt è stato rilevato")
ListBox1.Items.Add("Il File test.txt è stato rilevato")
ecc.
quando avvio mi viene messo tutto insieme nella list box..mettiamo che voglia mettere un risultato ogni 2 secondi senza complicarmi la vita...o meglio...farlo mentre il form è in'esecuzione...non che lo avvio..esegue tutto e poi visualizzo..ma avvio..e mi esegue passo a passo quello che gli scrivo..mentre guardo...spero sia stato abbastanza chiaro..per chiarimenti sono qui!
grazie a tutti
mitor
Ultima modifica effettuata da mitor il 05/03/2008 alle 1:24 |
|
Dark_Limit (Ex-Member)
Expert
Messaggi: 220
Iscritto: 15/01/2008
|
ciao...puoi usare questa : (vado a memoria)
system.threading.thread.sleep(tempo in ms)
spero sia questo quello che chiedevi..
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Molto chiaro no, però forse ho capito. Dark_limit ti propone una soluzione basata sui thread, ma siccome la tua non è un'applicazione console e puoi ben disporre degli eventi, è meglio se usi un timer con intervallo di 2000ms e al suo interno posizioni il codice che deve essere eseguito.
|
|
mitor (Normal User)
Pro
Messaggi: 73
Iscritto: 01/08/2007
|
ok,ora appena porto il fisso provo con il timer,anche se cmq dev,esserci un sistema piu professionale..provo cmq con il timer.se avete altre idee io sono qui
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Cosa intendi con più professionale?
P.S.: la soluzione di Dark_Limit è applicabile anche usando un BackgroundWorker.
|
|
mitor (Normal User)
Pro
Messaggi: 73
Iscritto: 01/08/2007
|
Postato originariamente da Il Totem:
Cosa intendi con più professionale?
P.S.: la soluzione di Dark_Limit è applicabile anche usando un BackgroundWorker. |
per il semplice fatto che non posso creare 3000 timer...sarebbe troppo monotono...devo essermi spiegato male..allora
mettiamo che abbia una listbox,e ad esempio ho da cancellare 10 file nel mio pc...e voglio che nella textbox venga aggiunto il file che ho cancellato dal sistema...solo che tramite un normale codice..e.sso una volta aperto il form mi trovo tutto già fatto..se invece volessi vedere aggiungere volta per volta che cancella un file?
quindi ad'esempio
Il file nomefile è stato cancellato
poi appena passa al secondo file
il nome file è stato cancellato...quindi me lo fà d'avanti..invece normalmente quando avvio il progetto,mi viene fuori nella listbox già tutto fatto..non sò se sono riuscito a spiegarmi...vorrei che i procedimenti li veda io..non che avvio il form e ha già fatto tutto senza che ho visto nulla...anche magari lasciando uno spazio di 1 secondo su ogni operazioni di eliminazione file e di aggiunta testo della listbox... |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Allora se ho ben capito il tuo programma deve memorizzare un certo numero di operazioni da eseguire, quindi eseguirle all'inizio del programma distanziandole però di 1 secondo l'una dall'altra. Giusto?
|
|
mitor (Normal User)
Pro
Messaggi: 73
Iscritto: 01/08/2007
|
Postato originariamente da Il Totem:
Allora se ho ben capito il tuo programma deve memorizzare un certo numero di operazioni da eseguire, quindi eseguirle all'inizio del programma distanziandole però di 1 secondo l'una dall'altra. Giusto? |
ecco,esattamente
una cosa del genere!
cosi da far capire alla persona che usa il programma le operazioni che sta facendo..non sò se hai presente nei programmi Setup,che ci sono i dettagli mentre installi il programma....e ti mostra progressivamente che cosa estrae...una cosa del genere..cmq anche il sistema del secondo di distanza può andare! |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Allora possiamo fare in questo modo. Ammettiamo che le operazioni debbano essere svolte su un file:
Codice sorgente - presumibilmente VB.NET |
'Questo delegate esprime una procedura che opera su un file Public Delegate Sub DoAction(ByVal FileName As String) 'Questa struttura memorizza l'operazione da eseguire Public Structure FileAction Private _Action As DoAction Private _FileName As String Public Property Action() As DoAction Get Return _Action End Get Set(ByVal value As DoAction) If value IsNot Nothing Then _Action = value End If End Set End Property Public Property FileName() As String Get Return _FileName End Get Set(ByVal value As String) _FileName = value End Set End Property Sub New(ByVal A As DoAction, ByVal F As String) Me.Action = A Me.FileName = F End Sub End Structure 'Questa lista rappresenta l'elenco di tutte le operazioni Public AllActions As New List(Of FileAction) Private Sub CreateNewFile(ByVal F As String) IO. File. Create(F ). Close()End Sub Private Sub Form4_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Shown 'Qua carichi la lista come vuoi, ad esempio ci puoi mettere questi valori: With AllActions 'Elimina un file . Add(New FileAction (AddressOf IO. File. Delete, "C:\file.txt")) 'Crea un nuovo file vuoto .Add(New FileAction(AddressOf Me.CreateNewFile, "C:\newfile.txt")) End With 'Quindi attiva il timer Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 'Esegue la prima azione If AllActions.Count > 0 Then AllActions(0).Action.Invoke( _ AllActions(0).FileName) 'Dopo averla eseguita, la elimina dalla lista AllActions.RemoveAt(0) End If End Sub
|
|
|