AsyncOperationManager.CreateOperation メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > AsyncOperationManager.CreateOperation メソッドの意味・解説 

AsyncOperationManager.CreateOperation メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

特定の非同期操作存続期間追跡するために使用する System.ComponentModel.AsyncOperation を返します

名前空間: System.ComponentModel
アセンブリ: System (system.dll 内)
構文構文

Public Shared Function CreateOperation
 ( _
    userSuppliedState As Object _
) As AsyncOperation
Dim userSuppliedState As Object
Dim returnValue As AsyncOperation

returnValue = AsyncOperationManager.CreateOperation(userSuppliedState)
public static AsyncOperation CreateOperation
 (
    Object userSuppliedState
)
public:
static AsyncOperation^ CreateOperation (
    Object^ userSuppliedState
)
public static AsyncOperation CreateOperation
 (
    Object userSuppliedState
)
public static function CreateOperation
 (
    userSuppliedState : Object
) : AsyncOperation

パラメータ

userSuppliedState

クライアント状態の一部 (タスク ID など) を特定の非同期操作関連付けるために使用されるオブジェクト

戻り値
非同期メソッド呼び出し存続期間追跡するために使用できる AsyncOperation

解説解説

CreateOperation メソッドは、特定の非同期操作存続期間追跡して操作完了時にアプリケーション モデル通知を行うために使用できる System.ComponentModel.AsyncOperation返しますまた、操作終了せずに、進行状況更新インクリメント結果ポストするためにも使用できますSystem.ComponentModel.AsyncOperation は、これらの呼び出しアプリケーション モデル適切なスレッドまたはコンテキスト正しくマーシャリングます。

イベント ベースの非同期パターンサポートするクラス実装する場合MethodNameAsync メソッド呼び出されるたびに、クラスCreateOperation呼び出す必要がありますメソッド呼び出すクライアント アプリケーションは、userSuppliedState パラメータ使用して呼び出し一意識別できます。したがって非同期操作実行中に発生したイベント区別できます

注意に関するメモ注意

クライアント コードは、userSuppliedState パラメータ一意の値を提供する必要がありますタスク ID一意ではない場合実装進行状況その他のイベント誤って報告する可能性ありますコードによって、一意でないタスク ID存在するかどうかチェックしこのような ID検出され場合は、System.ArgumentException をスローする必要があります

コードは、CreateOperation によって返されるすべての System.ComponentModel.AsyncOperation追跡し、基になる対応する非同期操作オブジェクト使用して更新ポスト操作終了を行う必要があります。この追跡は、System.ComponentModel.AsyncOperationデリゲート間でパラメータとして渡すだけで簡単に行うことができます。より高度なデザインでは、クラスSystem.ComponentModel.AsyncOperation オブジェクトコレクション維持しタスク起動時オブジェクト追加したり、タスク完了時またはキャンセル時にオブジェクト削除したできますこの方法を使用すると、一意userSuppliedState パラメータ値をチェックできますまた、複数同時実行呼び出しサポートするクラス使用する場合には、この方法を使用する必要があります

非同期クラス実装方法詳細については、「イベントベースの非同期パターン実装」を参照してください

使用例使用例

CreateOperation メソッド使用して非同期操作存続期間追跡するために使用する System.ComponentModel.AsyncOperation作成するコード例次に示します。このコード例は、AsyncOperationManager クラストピック取り上げているコード例一部分です。

import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.ComponentModel.*;
import System.Threading.*;
' This method starts the asynchronous calculation. 
' First, it checks the supplied task ID for uniqueness.
' If taskId is unique, it creates a new WorkerEventHandler 
' and calls its BeginInvoke method to start the calculation.
Public Overridable Sub CalculatePrimeAsync(
 _
    ByVal numberToTest As Integer,
 _
    ByVal taskId As Object)

    ' Create an AsyncOperation for taskId.
    Dim asyncOp As AsyncOperation = _
        AsyncOperationManager.CreateOperation(taskId)

    ' Multiple threads will access the task dictionary,
    ' so it must be locked to serialize access.
    SyncLock userStateToLifetime.SyncRoot
        If userStateToLifetime.Contains(taskId) Then
            Throw New ArgumentException( _
                "Task ID parameter must be unique",
 _
                "taskId")
        End If

        userStateToLifetime(taskId) = asyncOp
    End SyncLock

    ' Start the asynchronous operation.
    workerDelegate = New WorkerEventHandler( _
        AddressOf CalculateWorker)
    workerDelegate.BeginInvoke( _
        numberToTest, _
        asyncOp, _
        completionMethodDelegate, _
        Nothing, _
        Nothing)

End Sub
// This method starts the asynchronous calculation. 
// First, it checks the supplied task ID for uniqueness.
// If taskId is unique, it creates a new WorkerEventHandler 
// and calls its BeginInvoke method to start the calculation.
public virtual void CalculatePrimeAsync(
    int numberToTest,
    object taskId)
{
    // Create an AsyncOperation for taskId.
    AsyncOperation asyncOp =
        AsyncOperationManager.CreateOperation(taskId);

    // Multiple threads will access the task dictionary,
    // so it must be locked to serialize access.
    lock (userStateToLifetime.SyncRoot)
    {
        if (userStateToLifetime.Contains(taskId))
        {
            throw new ArgumentException(
                "Task ID parameter must be unique", 
                "taskId");
        }

        userStateToLifetime[taskId] = asyncOp;
    }

    // Start the asynchronous operation.
    workerDelegate = new WorkerEventHandler(CalculateWorker);
    workerDelegate.BeginInvoke(
        numberToTest,
        asyncOp,
        completionMethodDelegate,
        null,
        null);
}
public void CalculatePrimeAsync(int
 numberToTest, Object taskId)
{
    // State must be unique.
    AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(taskId);
    synchronized (userStateToLifetime.get_SyncRoot()) {
        if (userStateToLifetime.Contains(taskId)) {
            throw new ArgumentException("Task ID parameter
 must be unique", 
                "taskId");
        }
        userStateToLifetime.set_Item(taskId, asyncOp);
    }
    // Start the asynchronous operation.
    workerDelegate = new WorkerEventHandler(CalculateWorker);
    workerDelegate.BeginInvoke(numberToTest, asyncOp, 
        completionMethodDelegate, null, null);
} //CalculatePrimeAsync
public void CalculatePrimeAsync(int
 numberToTest, Object taskId)
{
    // State must be unique.
    AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(taskId);
    synchronized (userStateToLifetime.get_SyncRoot()) {
        if (userStateToLifetime.Contains(taskId)) {
            throw new System.ArgumentException(
                "Task ID parameter must be unique", "taskId");
        }
        userStateToLifetime.set_Item(taskId, asyncOp);
    }
    // Start the asynchronous operation.
    workerDelegate = new WorkerEventHandler(CalculateWorker);
    workerDelegate.BeginInvoke(numberToTest, asyncOp, 
        completionMethodDelegate, null, null);
} //CalculatePrimeAsync
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からAsyncOperationManager.CreateOperation メソッドを検索した結果を表示しています。
Weblioに収録されているすべての辞書からAsyncOperationManager.CreateOperation メソッドを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からAsyncOperationManager.CreateOperation メソッド を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「AsyncOperationManager.CreateOperation メソッド」の関連用語

AsyncOperationManager.CreateOperation メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



AsyncOperationManager.CreateOperation メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS