AsyncCompletedEventArgs 類別

定義

MethodNameCompleted 事件提供資料。Provides data for the MethodNameCompleted event.

public ref class AsyncCompletedEventArgs : EventArgs
public class AsyncCompletedEventArgs : EventArgs
type AsyncCompletedEventArgs = class
    inherit EventArgs
Public Class AsyncCompletedEventArgs
Inherits EventArgs
繼承
AsyncCompletedEventArgs
衍生

範例

下列程式碼範例將示範AsyncOperation如何使用來追蹤非同步作業的存留期。The following code example demonstrates using an AsyncOperation to track the lifetime of asynchronous operations. 這個程式碼範例是針對System.ComponentModel.AsyncOperationManager類別提供之較大範例的一部分。This code example is part of a larger example provided for the System.ComponentModel.AsyncOperationManager class.

using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Threading;
using System.Windows.Forms;
Imports System.Collections
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports System.Drawing
Imports System.Globalization
Imports System.Threading
Imports System.Windows.Forms
// This event handler updates the ListView control when the
// PrimeNumberCalculator raises the CalculatePrimeCompleted
// event. The ListView item is updated with the appropriate
// outcome of the calculation: Canceled, Error, or result.
private void primeNumberCalculator1_CalculatePrimeCompleted(
    object sender, 
    CalculatePrimeCompletedEventArgs e)
{
    Guid taskId = (Guid)e.UserState;

    if (e.Cancelled)
    {   
        string result = "Canceled";

        ListViewItem lvi = UpdateListViewItem(taskId, result);

        if (lvi != null)
        {
            lvi.BackColor = Color.Pink;
            lvi.Tag = null;
        }
    }
    else if (e.Error != null)
    {
        string result = "Error";

        ListViewItem lvi = UpdateListViewItem(taskId, result);

        if (lvi != null)
        {
            lvi.BackColor = Color.Red;
            lvi.ForeColor = Color.White;
            lvi.Tag = null;
        }
    }
    else
    {   
        bool result = e.IsPrime;

        ListViewItem lvi = UpdateListViewItem(
            taskId, 
            result, 
            e.FirstDivisor);

        if (lvi != null)
        {
            lvi.BackColor = Color.LightGray;
            lvi.Tag = null;
        }
    }
}
' This event handler updates the ListView control when the
' PrimeNumberCalculator raises the CalculatePrimeCompleted
' event. The ListView item is updated with the appropriate
' outcome of the calculation: Canceled, Error, or result.
Private Sub primeNumberCalculator1_CalculatePrimeCompleted( _
    ByVal sender As Object, _
    ByVal e As CalculatePrimeCompletedEventArgs) _
    Handles primeNumberCalculator1.CalculatePrimeCompleted

    Dim taskId As Guid = CType(e.UserState, Guid)

    If e.Cancelled Then
        Dim result As String = "Canceled"

        Dim lvi As ListViewItem = UpdateListViewItem( _
            taskId, _
            result)

        If (lvi IsNot Nothing) Then
            lvi.BackColor = Color.Pink
            lvi.Tag = Nothing
        End If

    ElseIf e.Error IsNot Nothing Then

        Dim result As String = "Error"

        Dim lvi As ListViewItem = UpdateListViewItem( _
            taskId, result)

        If (lvi IsNot Nothing) Then
            lvi.BackColor = Color.Red
            lvi.ForeColor = Color.White
            lvi.Tag = Nothing
        End If
    Else
        Dim result As Boolean = e.IsPrime

        Dim lvi As ListViewItem = UpdateListViewItem( _
            taskId, _
            result, _
            e.FirstDivisor)

        If (lvi IsNot Nothing) Then
            lvi.BackColor = Color.LightGray
            lvi.Tag = Nothing
        End If
    End If

End Sub

備註

如果您使用的類別會執行以事件為基礎的非同步模式總覽, 則類別會提供方法名稱Completed事件。If you are using a class that implements the Event-based Asynchronous Pattern Overview, the class will provide a MethodNameCompleted event. 如果您將System.ComponentModel.AsyncCompletedEventHandler委派的實例加入至事件, 您將會在對應的事件處理常式方法的AsyncCompletedEventArgs參數中收到非同步作業結果的相關資訊。If you add an instance of the System.ComponentModel.AsyncCompletedEventHandler delegate to the event, you will receive information about the outcome of asynchronous operations in the AsyncCompletedEventArgs parameter of the corresponding event-handler method.

用戶端應用程式的事件處理常式委派可以檢查Cancelled屬性, 以判斷非同步工作是否已取消。The client application's event-handler delegate can check the Cancelled property to determine if the asynchronous task was cancelled.

用戶端應用程式的事件處理常式委派可以檢查Error屬性, 以判斷非同步工作執行期間是否發生例外狀況。The client application's event-handler delegate can check the Error property to determine if an exception occurred during execution of the asynchronous task.

如果類別支援多個非同步方法, 或多次呼叫相同的非同步方法, 您可以藉由檢查UserState屬性的值來判斷哪個工作引發了方法名稱Completed事件。If the class supports multiple asynchronous methods, or multiple calls to the same asynchronous method, you can determine which task raised the MethodNameCompleted event by checking the value of the UserState property. 您的程式碼必須追蹤這些標記, 稱為工作識別碼, 因為它們的對應非同步工作會開始和完成。Your code will need to track these tokens, known as task IDs, as their corresponding asynchronous tasks start and complete.

給繼承者的注意事項

遵循事件架構非同步模式的類別可以引發事件, 以警示用戶端有關暫止非同步作業的狀態。Classes that follow the Event-based Asynchronous Pattern can raise events to alert clients about the status of pending asynchronous operations. 如果類別提供「方法名稱Completed 」事件, AsyncCompletedEventArgs您可以使用來告訴用戶端有關非同步作業結果的資訊。If the class provides a MethodNameCompleted event, you can use the AsyncCompletedEventArgs to tell clients about the outcome of asynchronous operations.

您可能想要與用戶端通訊, 以取得非同步作業結果的詳細資訊, AsyncCompletedEventArgs而不是適合。You may want to communicate to clients more information about the outcome of an asynchronous operation than an AsyncCompletedEventArgs accommodates. 在此情況下, 您可以從AsyncCompletedEventArgs類別衍生您自己的類別, 並提供額外的私用執行個體變數和對應的唯讀公用屬性。In this case, you can derive your own class from the AsyncCompletedEventArgs class and provide additional private instance variables and corresponding read-only public properties. 如果作業已取消或發生錯誤, 請在傳回屬性值之前呼叫方法。RaiseExceptionIfNecessary()Call the RaiseExceptionIfNecessary() method before returning the property value, in case the operation was canceled or an error occurred.

建構函式

AsyncCompletedEventArgs()

初始化 AsyncCompletedEventArgs 類別的新執行個體。Initializes a new instance of the AsyncCompletedEventArgs class.

AsyncCompletedEventArgs(Exception, Boolean, Object)

初始化 AsyncCompletedEventArgs 類別的新執行個體。Initializes a new instance of the AsyncCompletedEventArgs class.

屬性

Cancelled

取得值,指出非同步作業是否已取消。Gets a value indicating whether an asynchronous operation has been canceled.

Error

取得值,指出非同步作業期間是否發生錯誤。Gets a value indicating which error occurred during an asynchronous operation.

UserState

取得非同步工作的唯一識別項。Gets the unique identifier for the asynchronous task.

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。Determines whether the specified object is equal to the current object.

(繼承來源 Object)
GetHashCode()

作為預設雜湊函數。Serves as the default hash function.

(繼承來源 Object)
GetType()

取得目前執行個體的 TypeGets the Type of the current instance.

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。Creates a shallow copy of the current Object.

(繼承來源 Object)
RaiseExceptionIfNecessary()

如果非同步作業失敗,引發使用者提供的例外狀況。Raises a user-supplied exception if an asynchronous operation failed.

ToString()

傳回代表目前物件的字串。Returns a string that represents the current object.

(繼承來源 Object)

適用於

另請參閱