AsyncOperationManagerとは? わかりやすく解説

AsyncOperationManager クラス

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

非同期メソッド呼び出しサポートするクラス同時実行管理提供します。このクラス継承できません。

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

Public NotInheritable Class
 AsyncOperationManager
public static class AsyncOperationManager
public ref class AsyncOperationManager abstract
 sealed
public final class AsyncOperationManager
public final class AsyncOperationManager
解説解説

イベントベースの非同期パターン概要に従ってクラス非同期動作提供する必要がある場合同時実行管理の問題多数発生しますこのような問題1 つに、アプリケーション モデル (Windows フォーム アプリケーションASP.NET アプリケーションコンソール アプリケーションなど) に適したスレッドまたはコンテキストイベント ハンドラ呼び出す必要があるという要件ありますAsyncOperationManager使用すると、.NET Frameworkサポートされているすべてのアプリケーション モデル下で適切に実行されるクラス簡単に作成できます

AsyncOperationManager クラスには、特定の非同期タスク存続期間追跡するために使用できる System.ComponentModel.AsyncOperation を返す、CreateOperation という 1 つメソッド用意されています。タスクSystem.ComponentModel.AsyncOperation は、タスク完了時にクライアント通知を行うために使用できますまた、操作終了せずに、進行状況更新インクリメント結果ポストするためにも使用できます

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

メモメモ

このクラス適用される HostProtectionAttribute 属性Resources プロパティの値は、SharedState です。HostProtectionAttribute は、デスクトップ アプリケーション (一般的にはアイコンダブルクリックコマンド入力、またはブラウザURL入力して起動するアプリケーション) には影響しません。詳細については、HostProtectionAttribute クラストピックまたは「SQL Server プログラミングホスト保護属性」を参照してください

使用例使用例

AsyncOperationManager クラス使用して任意のアプリケーション モデル非同期操作サポートするクラス作成するコード例次に示します。この例では、数値テストして素数かどうかテストするクラス実装方法示します。この計算時間がかかる場合があるため、別のスレッド行います進行状況レポートインクリメント結果、および完了通知は、クライアントイベント ハンドラ適切なスレッドまたはコンテキスト呼び出されるようにする AsyncOperation クラスによって処理されます。

完全なコードの一覧については、「方法 : イベントベースの非同期パターンサポートするコンポーネント実装する」を参照してくださいクライアント フォームコード全体については、「方法 : イベントベースの非同期パターンクライアント実装する」を参照してください

' 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
継承階層継承階層
System.Object
  System.ComponentModel.AsyncOperationManager
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AsyncOperationManager プロパティ


AsyncOperationManager メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
参照参照

関連項目

AsyncOperationManager クラス
System.ComponentModel 名前空間
AsyncOperation クラス

その他の技術情報

イベントベースの非同期パターン実装
マネージ スレッド処理の実施

AsyncOperationManager メンバ

非同期メソッド呼び出しサポートするクラス同時実行管理提供します。このクラス継承できません。

AsyncOperationManager データ型公開されるメンバを以下の表に示します


パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ SynchronizationContext 非同期操作同期コンテキスト取得または設定します
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

AsyncOperationManager クラス
System.ComponentModel 名前空間
AsyncOperation クラス

その他の技術情報

イベントベースの非同期パターン実装
マネージ スレッド処理の実施



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

辞書ショートカット

すべての辞書の索引

「AsyncOperationManager」の関連用語

AsyncOperationManagerのお隣キーワード
検索ランキング

   

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



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

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

©2025 GRAS Group, Inc.RSS