Ciao. Il codice che hai scritto è corretto...
A suo tempo ho avuto anche io un problema simile al tuo.
L' ho risolto creado un delegato generico a cui passando dei parametri stringa settavo i valori appropriati.
Tipo cosi ...
delegate void SetValueCallbackPrgBarCom (string Tipo, int NewValue);
private void TcSetProgBarComSet(string UpbTipo, int UpbValue)
{
if (this.InvokeRequired)
{
SetValueCallbackPrgBarCom UpbDb = new SetValueCallbackPrgBarCom(TcSetProgBarComSet);
this.Invoke(UpbDb, new object[] { UpbTipo, UpbValue });
}
else
{
if (UpbTipo == "Min")
this.TcPrgBarCom.Minimum = UpbValue;
if (UpbTipo == "Max")
this.TcPrgBarCom.Maximum = UpbValue;
if (UpbTipo == "Val")
this.TcPrgBarCom.Value = UpbValue;
}
}
private void Cmd_Click(object sender, EventArgs e)
{
TcSetProgBarComSet("Min", 0);
TcSetProgBarComSet("Max", 100);
TcSetProgBarComSet("Val", 0);
for (int I = 0; I < 100; I++)
TcSetProgBarComSet("Val", I);
}
Ovviamente gestito in un Thread a parte ...
Il codice è in c#, ma è facilemte traducibile in Vb.Net
Ciao Ciao