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

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > 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) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


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

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

辞書ショートカット

すべての辞書の索引

「AsyncOperationManager クラス」の関連用語

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

   

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



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

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

©2025 GRAS Group, Inc.RSS