0

進行状況が変更されたことを報告する必要があります。次のコードを検討してください。

Public Class Calculator
  Public Event CalculationProgress (ByVal sender As Object, ByVal e As MyCalculationProgressEventArgs)
Public Function Calculate(..)..
' Perform calculation here ...
' Reporting proggress
Dim args As New MyCalculationProgressEventArgs(myobj, myValue)
  RaiseEvent CalculationProgress (Me, args)
...
End Class

*** 別のクラス

Private WithEvents calculator As Calculator

Private Function PerformCalculation(ByVal obj As Object) As CalcParams
Dim params As CalcParams = CType(obj, CalcParams)
calculator = GetCalculator()
....
Return params.result = calculator.Calculate
End Function

Private Sub calculationWorker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) _
Handles calculationWorker.DoWork
  Dim calcResult As MyType = PerformCalculation(CType(e.Argument, MyType ))
  e.Result = calcResult
End Sub

Private Sub calculationWorker_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) _
Handles calculationWorker.ProgressChanged
     CType(Parent.Parent, MainWindow).pbcCurrentProgress.Value = e.ProgressPercentage
End Sub

CalculationProgress イベントをサブスクライブして呼び出す方法と場所

 calculationWorker.ReportProgress(MyCalculationProgressEventArgs.Percent)

?

4

2 に答える 2

0

これは、GetCalculator 呼び出しの後、Calculate を呼び出す前に行います。

于 2009-03-31T12:48:56.107 に答える