Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Operazioni Distanziate
Forum - C# / VB.NET - Operazioni Distanziate

Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 1:23
Mercoledì, 05/03/2008
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
PM Quote
Avatar
Dark_Limit (Ex-Member)
Expert


Messaggi: 220
Iscritto: 15/01/2008

Segnala al moderatore
Postato alle 14:51
Mercoledì, 05/03/2008
ciao...puoi usare questa : (vado a memoria)

system.threading.thread.sleep(tempo in ms)

spero sia questo quello che chiedevi..:k:

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:07
Mercoledì, 05/03/2008
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.

PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 12:03
Venerdì, 07/03/2008
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

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:46
Venerdì, 07/03/2008
Cosa intendi con più professionale?

P.S.: la soluzione di Dark_Limit è applicabile anche usando un BackgroundWorker.

PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 0:32
Sabato, 08/03/2008
Testo quotato

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

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:12
Sabato, 08/03/2008
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?

PM Quote
Avatar
mitor (Normal User)
Pro


Messaggi: 73
Iscritto: 01/08/2007

Segnala al moderatore
Postato alle 20:22
Sabato, 08/03/2008
Testo quotato

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:D
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!

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:09
Domenica, 09/03/2008
Allora possiamo fare in questo modo. Ammettiamo che le operazioni debbano essere svolte su un file:

Codice sorgente - presumibilmente VB.NET

  1. 'Questo delegate esprime una procedura che opera su un file
  2. Public Delegate Sub DoAction(ByVal FileName As String)
  3.  
  4. 'Questa struttura memorizza l'operazione da eseguire
  5. Public Structure FileAction
  6.     Private _Action As DoAction
  7.     Private _FileName As String
  8.  
  9.     Public Property Action() As DoAction
  10.         Get
  11.             Return _Action
  12.         End Get
  13.         Set(ByVal value As DoAction)
  14.             If value IsNot Nothing Then
  15.                 _Action = value
  16.             End If
  17.         End Set
  18.     End Property
  19.  
  20.     Public Property FileName() As String
  21.         Get
  22.             Return _FileName
  23.         End Get
  24.         Set(ByVal value As String)
  25.             _FileName = value
  26.         End Set
  27.     End Property
  28.  
  29.     Sub New(ByVal A As DoAction, ByVal F As String)
  30.         Me.Action = A
  31.         Me.FileName = F
  32.     End Sub
  33. End Structure
  34.  
  35. 'Questa lista rappresenta l'elenco di tutte le operazioni
  36. Public AllActions As New List(Of FileAction)
  37.  
  38. Private Sub CreateNewFile(ByVal F As String)
  39.     IO.File.Create(F).Close()
  40. End Sub
  41.  
  42. Private Sub Form4_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Shown
  43.     'Qua carichi la lista come vuoi, ad esempio ci puoi mettere questi valori:
  44.     With AllActions
  45.         'Elimina un file
  46.         .Add(New FileAction(AddressOf IO.File.Delete, "C:\file.txt"))
  47.         'Crea un nuovo file vuoto
  48.         .Add(New FileAction(AddressOf Me.CreateNewFile, "C:\newfile.txt"))
  49.     End With
  50.     'Quindi attiva il timer
  51.     Timer1.Start()
  52. End Sub
  53.  
  54. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  55.     'Esegue la prima azione
  56.     If AllActions.Count > 0 Then
  57.         AllActions(0).Action.Invoke( _
  58.         AllActions(0).FileName)
  59.         'Dopo averla eseguita, la elimina dalla lista
  60.         AllActions.RemoveAt(0)
  61.     End If
  62. End Sub


PM Quote