Newsgroup: it.comp.lang.visual-basic
Titolo: cosa c'è di sbagliato in queste sub???

Ho realizzato con VB2005 un piccolo programma di setup per un'applicazione 
realizzata in MS-Access per poterlo distribuire, oggi mi è venuta la 
fantasia di inserirci una Barra di progressione che cicla continuamente fino 
al termine dell'installazione che dura pressappoco 10 o 15 minuti.
Il codice è il seguente:
    '    evento del timer
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Timer1.Tick
        If ProgressBar1.Value <> ProgressBar1.Maximum Then
            ProgressBar1.Value = (ProgressBar1.Value + 1)
            Label3.Text = "Attendere!! Installazione in corso..."
        Else
            ProgressBar1.Value = 0
        End If
    End Sub
    'Button1 è il pulsante installa
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
        ProgressBar1.Value = 0
        Timer1.Enabled = True
        Timer1.Start()
'Quì c'è il corpo del programma che dopo aver effettuato dei controlli 
sull'esistenza di alcune dir e file, li rinomina per dar posto ai nuovi file
'Il passaggio successivo è la decompressione di un archivio autoestraente 
fatto con winrar in modalità nascosta
        ProgressBar1.Value = 100
        Timer1.Enabled = False
        Timer1.Stop()
        Label3.Text = "Installazione completata..."
        MsgBox("Installazione terminata!!", MsgBoxStyle.OkOnly, "Setup...")
        Close()
   End Sub
Il problema è che la barra di progressione non si avvia per niente e viene 
riempita solo alla fine...
su un altra applicazione di prova (molto piu semplice) lo stesso codice 
funziona perfettamente...
Sapreste dirmi cosa ce che non và???
grazie in anticipo
Nicola 

 Sapreste dirmi cosa ce che non và???
Ma il ProgressBar1.Minimum è uguale a 0?
Magari prova a mettere "ProgressBar1.Value = 1" come prima istruzione, 
invece di 0, nella sub Button1_Click.

 Sapreste dirmi cosa ce che non và???
Ammesso che il timer abbia il tempo di scattare ogni tanto (ma tu questo 
l'avrai già verificato, vero?)
ProgressBar1.Refresh()
Ciao 

 Sapreste dirmi cosa ce che non và???
Semplice, la GUI non viene ridisegnata.
Ovvero, non si attivano i vari eventi.
Questo succede perchè appunto il programma è impegnato a svolgere il lavoro 
nell' altra sub.
Dovresti avviare un thread asincrono, ma con vb6 è una tragedia.
Oppure usare DoEvents e poi Me.Refresh, ma perdi molto in prestazioni.
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
My Blog: 
http://blog.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
Se un circuito funziona al primo tentativo è perchè il problema è molto
più nascosto e subdolo di quanto tu possa pensare...
E apparirà nel momento in cui farà il massimo danno 

 Oppure usare DoEvents e poi Me.Refresh, ma perdi molto in prestazioni.
No, aspetta, DoEvents fa una cosa, Refresh un'altra.
Difficilmente le metterei insieme.
E il refresh può essere limitato al solo controllo in questione riducendo 
parecchio le risorse necessarie.
Ciao 

 ha scritto nel messaggio 
news:44ad683e$0$10052$4faf...@reader3.news.tin.it...

grazie x i consigli ma.....
alla fine come risolvo? con ProgressBar1.Refresh()?
in caso affermativo va inserita nell'evento tick del timer giusto??
Nicola

 Difficilmente le metterei insieme.
Sicuro?
Ma se uno usa progessbar1.refresh e poi non fa il DoEvents la progessbar non 
viene ridisegnata no?


 non viene ridisegnata no?
Sě, Refresh() forza il ridisegno.
Ciao 

 ha scritto nel messaggio 
news:44ad6ffa$0$10065$4faf...@reader3.news.tin.it...

Ho provato ma a quanto pare č indifferente al refresh... non č cambiato 
assolutamente nulla...
altri suggerimenti??
Nicola 

 altri suggerimenti??
Ripeto la domanda: hai verificato che nel timer ci passa?
Probabilmente non ha il tempo nemmeno di fare quello e in questo caso un bel 
thread separato dove eseguire le operazioni sarebbe la soluzione.
Ciao 

 
...
Ok, sono d'accordo, creare un prog di setup da soli dà soddisfazione:
ma ti consiglio di rilasciare il prog con un setup fatto con Inno Setup
e quando risolvi il problema di rilasciarlo con il tuo setup. Così hai
tutto il tempo che vuoi...