Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti. Esordisco in questa community con un problema su cui mi arrovello da tempo.
In pratica, con l'evento Click di un bottone, vado a crittare un'immagine contenuta in una ListView, con una StatusLabel che indica lo stato dell'operazione:
Codice sorgente - presumibilmente VB.NET
If Saver.ShowDialog= Windows.Forms.DialogResult.OKAnd Saver.FileName <> ""Then
Il problema è che, prima di eseguire il metodo Crypt della classe ImageCrypting, non viene aggiornata la Label a "Encrypting...", ma rimane "Ready" per tutta la durata dell'operazione, per poi cambiare il suo testo in "File encrypted" finita l'esecutione di Crypt.
Lo stesso problema mi si presentava durante un ciclo for con un'istruzione all'interno che aggiornava il testo di una Label per indicare lo stato dell'operazione, esempio:
Codice sorgente - presumibilmente VB.NET
Label.Text=""
For I AsInteger= 0 to x
Istruzione...
Istruzione...
Label.Text="Cicli residui : "&(x - I).ToString
Next I
In questo caso, durante tutto il ciclo, il testo della label rimaneva "", per poi diventare "0" alla fine del ciclo.
Ciao! Il ciclo for che cripta i tuoi dati viene "caricato" direttamente sul thread della tua finestra principale
Ciò significa che tutti i messaggi di repaint della finestra vengono momentaneamente "sospesi" in attesa che il ciclo termini.
Per risolvere puoi provare ad aggiungere "Application.DoEvents" subito prima del Next del ciclo for, in modo da processare tutti gli eventi accodati
e per sicurezza prima di quella riga aggiungici anche un bel "Me.Refresh"che non può far male (forza il repaint della finestra principale e quindi anche della label)
Ultima modifica effettuata da giovannibart91 il 26/01/2011 alle 17:03
Esegui le tue operazioni di encriptazione su un thread separato.... puoi gestire i cambi di stato dell'interfaccia con degli eventi sul thread principale della tua applicazione