AsyncCompletedEventArgs.UserState プロパティ
アセンブリ: System (system.dll 内)

非同期タスクを一意に識別するオブジェクト参照。値が設定されていない場合は null 参照 (Visual Basic では Nothing)。

クラスが複数の非同期メソッドまたは単一メソッドの複数回にわたる呼び出しをサポートしている場合は、UserState プロパティの値をチェックすることによって、どのタスクが MethodNameCompleted イベントを発生させたかを判断できます。コードは、対応する非同期タスクの開始時と完了時に、タスク ID と呼ばれるこれらのトークンを追跡する必要があります。

AsyncOperation を使用して非同期操作の有効期間を追跡するコード例を次に示します。このコード例は、System.ComponentModel.AsyncOperationManager クラスのトピックで取り上げているコード例の一部分です。
Imports System Imports System.Collections Imports System.Collections.Specialized Imports System.ComponentModel Imports System.Drawing Imports System.Globalization Imports System.Threading Imports System.Windows.Forms <br /><span space="preserve">...</span><br /> ' 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 Not (lvi Is 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 Not (lvi Is 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 Not (lvi Is Nothing) Then lvi.BackColor = Color.LightGray lvi.Tag = Nothing End If End If End Sub
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; <br /><span space="preserve">...</span><br /> // 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; } } }
import System.*; import System.Collections.*; import System.Collections.Specialized.*; import System.ComponentModel.*; import System.Data.*; import System.Drawing.*; import System.Threading.*; import System.Windows.Forms.*; <br /><span space="preserve">...</span><br /> private void primeNumberCalculator1_CalculatePrimeCompleted(Object sender, CalculatePrimeCompletedEventArgs e) { Guid guid = (Guid)e.get_UserState(); if (e.get_Cancelled()) { String result = "Cancelled"; ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(), result); if (lvi != null) { lvi.set_BackColor(Color.get_Pink()); lvi.set_Tag(null); } } else { if (e.get_Error() != null) { String result = "Error"; ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(), result); if (lvi != null) { lvi.set_BackColor(Color.get_Red()); lvi.set_ForeColor(Color.get_White()); lvi.set_Tag(null); } } else { boolean result = e.get_IsPrime(); ListViewItem lvi = UpdateListViewItem((Guid)e.get_UserState(), result, e.get_FirstDivisor()); if (lvi != null) { lvi.set_BackColor(Color.get_LightGray()); lvi.set_Tag(null); } } } } //primeNumberCalculator1_CalculatePrimeCompleted

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


AsyncCompletedEventArgs クラス
AsyncCompletedEventArgs メンバ
System.ComponentModel 名前空間
System.ComponentModel.AsyncCompletedEventHandler
System.ComponentModel.AsyncOperationManager
System.ComponentModel.AsyncOperation
その他の技術情報
イベントベースの非同期パターンの実装
Weblioに収録されているすべての辞書からAsyncCompletedEventArgs.UserState プロパティを検索する場合は、下記のリンクをクリックしてください。

- AsyncCompletedEventArgs.UserState プロパティのページへのリンク