BackgroundWorker.OnProgressChanged(ProgressChangedEventArgs) Метод
Определение
Вызывает событие ProgressChanged.Raises the ProgressChanged event.
protected:
virtual void OnProgressChanged(System::ComponentModel::ProgressChangedEventArgs ^ e);
protected virtual void OnProgressChanged (System.ComponentModel.ProgressChangedEventArgs e);
abstract member OnProgressChanged : System.ComponentModel.ProgressChangedEventArgs -> unit
override this.OnProgressChanged : System.ComponentModel.ProgressChangedEventArgs -> unit
Protected Overridable Sub OnProgressChanged (e As ProgressChangedEventArgs)
Параметры
Примеры
В следующем примере кода показано использование OnProgressChanged метода для сообщения о ходе выполнения асинхронной операции.The following code example demonstrates the use of the OnProgressChanged method to report the progress of an asynchronous operation. Этот пример кода является частью большого примера, приведенного для AsyncOperationManager класса.This code example is part of a larger example provided for the AsyncOperationManager class.
// This method is invoked via the AsyncOperation object,
// so it is guaranteed to be executed on the correct thread.
private void CalculateCompleted(object operationState)
{
CalculatePrimeCompletedEventArgs e =
operationState as CalculatePrimeCompletedEventArgs;
OnCalculatePrimeCompleted(e);
}
// This method is invoked via the AsyncOperation object,
// so it is guaranteed to be executed on the correct thread.
private void ReportProgress(object state)
{
ProgressChangedEventArgs e =
state as ProgressChangedEventArgs;
OnProgressChanged(e);
}
protected void OnCalculatePrimeCompleted(
CalculatePrimeCompletedEventArgs e)
{
if (CalculatePrimeCompleted != null)
{
CalculatePrimeCompleted(this, e);
}
}
protected void OnProgressChanged(ProgressChangedEventArgs e)
{
if (ProgressChanged != null)
{
ProgressChanged(e);
}
}
' This method is invoked via the AsyncOperation object,
' so it is guaranteed to be executed on the correct thread.
Private Sub CalculateCompleted(ByVal operationState As Object)
Dim e As CalculatePrimeCompletedEventArgs = operationState
OnCalculatePrimeCompleted(e)
End Sub
' This method is invoked via the AsyncOperation object,
' so it is guaranteed to be executed on the correct thread.
Private Sub ReportProgress(ByVal state As Object)
Dim e As ProgressChangedEventArgs = state
OnProgressChanged(e)
End Sub
Protected Sub OnCalculatePrimeCompleted( _
ByVal e As CalculatePrimeCompletedEventArgs)
RaiseEvent CalculatePrimeCompleted(Me, e)
End Sub
Protected Sub OnProgressChanged( _
ByVal e As ProgressChangedEventArgs)
RaiseEvent ProgressChanged(e)
End Sub
Комментарии
При возникновении события через делегат вызывается обработчик события.Raising an event invokes the event handler through a delegate. Дополнительные сведения см. в разделе обработка и вызов событий.For more information, see Handling and Raising Events.
Метод OnProgressChanged также позволяет производным классам обрабатывать событие, не присоединяя делегат.The OnProgressChanged method also allows derived classes to handle the event without attaching a delegate. Это предпочтительная методика обработки событий в производном классе.This is the preferred technique for handling the event in a derived class.
Примечания для тех, кто наследует этот метод
При переопределении метода OnProgressChanged(ProgressChangedEventArgs) в производном классе нужно убедиться, что вызывается метод OnProgressChanged(ProgressChangedEventArgs) базового класса, чтобы зарегистрированные делегаты получили событие.When overriding OnProgressChanged(ProgressChangedEventArgs) in a derived class, be sure to call the base class's OnProgressChanged(ProgressChangedEventArgs) method so that registered delegates receive the event.