Scusate il ritardo nella risposta...
ecco il codice :
Imports System.ComponentModel
System.ComponentModelPublic Class Form1Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWorkDim bw As backgroundworker = CType(sender, backgroundworker)
e.Result = Incremento(e.Argument, bw, e)
If bw.CancellationPending Then
Class Form1Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWorkDim bw As backgroundworker = CType(sender, backgroundworker)
e.Result = Incremento(e.Argument, bw, e)
If bw.CancellationPending Then
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWorkDim bw As backgroundworker = CType(sender, backgroundworker)
e.Result = Incremento(e.Argument, bw, e)
If bw.CancellationPending Then
Dim bw As backgroundworker = CType(sender, backgroundworker)
e.Result = Incremento(e.Argument, bw, e)
If bw.CancellationPending Then
If bw.CancellationPending Thene.Cancel = True
TrueEnd If
End IfEnd Sub
End SubPrivate Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompletedIf e.Cancelled Then
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompletedIf e.Cancelled Then
If e.Cancelled ThenMessageBox.Show("Operazione Cancellata")ElseIf (e.Error IsNot Nothing) Then
"Operazione Cancellata")ElseIf (e.Error IsNot Nothing) Then
ElseIf (e.Error IsNot Nothing) ThenMessageBox.Show("Errore")Else
"Errore")Else
ElseMessageBox.Show(e.Result.ToString)
End If
End IfEnd Sub
End SubPrivate Function Incremento(ByVal fine As Double, ByVal worker As BackgroundWorker, ByVal e As DoWorkEventArgs) As Double
Private Function Incremento(ByVal fine As Double, ByVal worker As BackgroundWorker, ByVal e As DoWorkEventArgs) As DoubleStatic i As Double
Static i As DoubleDim result As Double = 0Dim percent As Double
Dim result As Double = 0Dim percent As Double
Dim percent As DoubleIf worker.CancellationPending Then
If worker.CancellationPending Thene.Cancel = True
TrueElse
ElseFor i = 1 To fine Step 1If i >= fine Then Exit For
For i = 1 To fine Step 1If i >= fine Then Exit For
If i >= fine Then Exit Forpercent = (i / fine) * 100
worker.ReportProgress(percent)
Next iEnd If
Next iEnd If
End Ifresult = i
Return resultEnd Function
Return resultEnd Function
End FunctionPrivate Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChangedMe.ProgressBar1.Value = e.ProgressPercentageEnd Sub
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChangedMe.ProgressBar1.Value = e.ProgressPercentageEnd Sub
Me.ProgressBar1.Value = e.ProgressPercentageEnd Sub
End SubPrivate Sub StartBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartBtn.ClickMe.BackgroundWorker1.RunWorkerAsync(1000000)End Sub
Private Sub StartBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartBtn.ClickMe.BackgroundWorker1.RunWorkerAsync(1000000)End Sub
Me.BackgroundWorker1.RunWorkerAsync(1000000)End Sub
End SubPrivate Sub cancelBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cancelBtn.ClickMe.BackgroundWorker1.CancelAsync()End Sub
Private Sub cancelBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cancelBtn.ClickMe.BackgroundWorker1.CancelAsync()End Sub
Me.BackgroundWorker1.CancelAsync()End Sub
End Sub
Ciao e Grazie