AsyncCompletedEventArgs 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供 MethodNameCompleted 事件的資料。
public ref class AsyncCompletedEventArgs : EventArgs
public class AsyncCompletedEventArgs : EventArgs
type AsyncCompletedEventArgs = class
inherit EventArgs
Public Class AsyncCompletedEventArgs
Inherits EventArgs
- 繼承
- 衍生
範例
以下程式碼範例示範使用 an AsyncOperation 來追蹤非同步操作的壽命。 此程式碼範例是本類別更大範例 System.ComponentModel.AsyncOperationManager 的一部分。
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
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.
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
備註
如果你使用的類別實作 了基於事件的非同步模式概覽,該類別會提供一個 MethodNameCompleted 事件。 如果你將代理的實例 System.ComponentModel.AsyncCompletedEventHandler 加入事件,你會在對應事件處理方法的參數中獲得非同步操作 AsyncCompletedEventArgs 結果的資訊。
用戶端應用程式的事件處理代理可以檢查該 Cancelled 屬性,以判斷非同步任務是否被取消。
用戶端應用程式的事件處理代理可以檢查該 Error 屬性,以判斷在執行非同步任務時是否發生異常。
如果類別支援多個非同步方法,或多次呼叫同一非同步方法,你可以透過檢查該屬性的UserState值來判斷是哪個任務引發了 MethodNameCompleted 事件。 你的程式碼需要追蹤這些稱為任務 ID 的標記,當對應的非同步任務開始和完成時。
給繼承者的注意事項
遵循事件基礎非同步模式的類別可以啟動事件,提醒客戶端待處理的非同步操作狀態。 如果類別提供 MethodNameCompleted 事件,你可以用 來 AsyncCompletedEventArgs 告訴客戶非同步操作的結果。
你可能想向客戶傳達更多關於非同步操作結果的資訊,而非僅僅 AsyncCompletedEventArgs 是服務。 在這種情況下,你可以從該 AsyncCompletedEventArgs 類別衍生出自己的類別,並提供額外的私有實例變數和相應的唯讀公開屬性。 在回傳屬性值前呼叫該 RaiseExceptionIfNecessary() 方法,以防操作被取消或發生錯誤。
建構函式
| 名稱 | Description |
|---|---|
| AsyncCompletedEventArgs() |
已淘汰.
初始化 AsyncCompletedEventArgs 類別的新執行個體。 |
| AsyncCompletedEventArgs(Exception, Boolean, Object) |
初始化 AsyncCompletedEventArgs 類別的新執行個體。 |
屬性
| 名稱 | Description |
|---|---|
| Cancelled |
會得到一個值,表示非同步操作是否已被取消。 |
| Error |
會獲得一個值,表示非同步操作中發生了哪個錯誤。 |
| UserState |
取得非同步任務的唯一識別碼。 |
方法
| 名稱 | Description |
|---|---|
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| RaiseExceptionIfNecessary() |
若非同步操作失敗,則會觸發使用者提供的例外。 |
| ToString() |
傳回表示目前 物件的字串。 (繼承來源 Object) |