AsyncCompletedEventArgs.UserState Właściwość

Definicja

Pobiera unikatowy identyfikator zadania asynchronicznego.

C#
public object UserState { get; }
C#
public object? UserState { get; }

Wartość właściwości

Odwołanie do obiektu, które jednoznacznie identyfikuje zadanie asynchroniczne; w przeciwnym razie, null jeśli nie ustawiono żadnej wartości.

Przykłady

W poniższym przykładzie kodu pokazano użycie elementu do AsyncOperation śledzenia okresu istnienia operacji asynchronicznych. Ten przykład kodu jest częścią większego przykładu podanego System.ComponentModel.AsyncOperationManager dla klasy.

C#
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;
C#
// 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;
        }
    }
}

Uwagi

Jeśli klasa obsługuje wiele metod asynchronicznych lub wiele wywołań pojedynczej metody, możesz określić, które zadanie wzbudziło zdarzenie MethodNameCompleted , sprawdzając wartość UserState właściwości. Kod będzie potrzebować śledzenia tych tokenów, znanych jako identyfikatory zadań, jako odpowiadających im zadań asynchronicznych, które są uruchamiane i wykonywane.

Wartość tej właściwości jest ustawiana podczas oryginalnego wywołania metody asynchronicznej, która uruchomiła zadanie.

Dotyczy

Produkt Wersje
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Zobacz też