>Aspetta non ti seguo:
>
>io nella dowork setto così:
>
> MyBackgroundWorker.ReportProgress(TotRecord, True)
>
>poi però nella progresschanged io ho scritto prima così:
>
> Me.ProgressBar1.Value = e.ProgressPercentage
>
>ora ho scritto così:
>
> Dim p As Boolean
> p = CBool(e.UserState.ToString)
> If p = True Then
> Me.ProgressBar1.Maximum = e.ProgressPercentage
> Exit Sub
> End If
Sarebbe così:
If e.UserState IsNot Nothing AndAlso DirectCast(e.UserState, Boolean) Then
Me.ProgressBar1.Maximum = e.ProgressPercentage
Me.ProgressBar1.Step = 1
Else
Me.ProgressBar1.Value = e.ProgressPercentage
End If
>
>ma non ha senso perchè così esco sempre dall'evento e poi il
>valore della progressbar.value come faccio a settarla?
>
>
>senti ultima cosa come faccio a bloccare il thread? devo utilizzare
>il metodo
>CancelAsync()
Sinceramente non l'ho ancora approfondito quel discorso...Dovresti documentarti
Comunque in linea di massima, si il comando da approfondire è il CancelSync() che ti imposterà poi la proprietà CancellationPending del BackgroundWorker in esecuzione.
>
>ma con direttamente l'oggetto BackgroundWorker della form?
Dentro agli eventi devi utilizzare SEMPRE il sender, e sarebbe meglio come regola generale
http://blogs.dotnethell.it/Regulator/