AsyncCompletedEventArgs.UserState 属性     
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取异步任务的唯一标识符。
public:
 property System::Object ^ UserState { System::Object ^ get(); };public object UserState { get; }public object? UserState { get; }member this.UserState : objPublic ReadOnly Property UserState As Object属性值
唯一标识异步任务的对象引用;如果未设置任何值,则为 null。
示例
下面的代码示例演示如何使用 AsyncOperation 来跟踪异步操作的生存期。 此代码示例是为 System.ComponentModel.AsyncOperationManager 类提供的一个更大示例的一部分。
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
注解
如果一个类支持多个异步方法或单个方法的多个调用,可以通过检查 属性的值UserState来确定引发 MethodNameCompleted 事件的任务。 代码需要跟踪这些令牌(称为任务 ID)以启动和完成相应的异步任务。
此属性的值是在对启动任务的异步方法的原始调用期间设置的。