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

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

AsyncOperation.PostOperationCompleted メソッド

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

非同期操作有効期間終了します

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

Public Sub PostOperationCompleted ( _
    d As SendOrPostCallback, _
    arg As Object _
)
Dim instance As AsyncOperation
Dim d As SendOrPostCallback
Dim arg As Object

instance.PostOperationCompleted(d, arg)
public void PostOperationCompleted (
    SendOrPostCallback d,
    Object arg
)
public:
void PostOperationCompleted (
    SendOrPostCallback^ d, 
    Object^ arg
)
public void PostOperationCompleted (
    SendOrPostCallback d, 
    Object arg
)
public function PostOperationCompleted (
    d : SendOrPostCallback, 
    arg : Object
)

パラメータ

d

操作終了時呼び出されるデリゲートラップする SendOrPostCallback オブジェクト

arg

d パラメータ格納されているデリゲート引数

例外例外
例外種類条件

InvalidOperationException

OperationCompleted は、このタスクに対して既に呼び出されています。

ArgumentNullException

dnull 参照 (Visual Basic では Nothing) です。

解説解説

PostOperationCompleted メソッド呼び出して非同期操作有効期間終了します特定のタスクに対してこのメソッド呼び出した後に、対応する AsyncOperation オブジェクト呼び出すと例外発生します

d パラメータは、完了キャンセル、またはタスクエラーによって、タスク有効期間終了したときに、クラス呼び出す必要のあるデリゲートラップます。AsyncOperation オブジェクトは、デリゲートアプリケーション モデル適したスレッドまたはコンテキスト確実に呼び出されるようにします。デリゲートは、非同期タスク有効期間終了したことをクライアント通知するイベント発生させることもできます

arg パラメータは、完了デリゲート dステータス情報を渡すために使用されます。パラメータ値として、AsyncOperation オブジェクト使用することも System.ComponentModel.AsyncCompletedEventArgs オブジェクト使用することもできますまた、状態ストレージ追加する場合は、System.ComponentModel.AsyncCompletedEventArgs クラスから派生したクラスインスタンス使用することもできます

継承時の注意 継承側は、PostOperationCompleted 呼び出し非同期にする必要があります。これにより、クラス ライブラリ プロバイダ非同期想定していても、特定のアプリケーション モデル同期発生する場合に、クラス ライブラリ プロバイダスタック オーバーフロー発生する可能性考慮する要はなくなります。このメソッドは、"有効期間終了" 呼び出しとして解釈される必要があります。これは、実装アプリケーション モデル適した操作実行する必要があることを意味します。たとえば、ASP.NET では、保留状態の非同期操作カウントデクリメントます。また、操作は既に完了しているため、その操作対す今後すべての呼び出し失敗するように、操作の状態を変更する必要があります非同期クラス実装方法詳細については、「イベントベースの非同期パターン実装」を参照してください

使用例使用例

PostOperationCompleted メソッド使用して非同期操作有効期間終了するコード例次に示します。このコード例は、System.ComponentModel.AsyncOperationManager クラストピック取り上げているコード例一部分です。

import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.ComponentModel.*;
import System.Threading.*;
' This method cancels a pending asynchronous operation.
Public Sub CancelAsync(ByVal
 taskId As Object)
    SyncLock userStateToLifetime.SyncRoot
        Dim obj As Object
 = userStateToLifetime(taskId)
        If Not (obj Is Nothing)
 Then
            Dim asyncOp As AsyncOperation =
 obj

            Dim numberToTest As Integer
 = 0
            Dim firstDivisor As Integer
 = 1
            Dim isPrime As Boolean
 = False
            Dim exception As Exception = Nothing
            Dim canceled As Boolean
 = True

            Dim e As New
 CalculatePrimeCompletedEventArgs( _
                numberToTest, _
                firstDivisor, _
                isPrime, _
                exception, _
                canceled, _
                asyncOp.UserSuppliedState)

            ' The asyncOp object is responsible for 
            ' marshalling the call to the proper 
            ' thread or context.
            asyncOp.PostOperationCompleted( _
            onCompletedDelegate, _
            e)
        End If
    End SyncLock

End Sub
// This method cancels a pending asynchronous operation.
public void CancelAsync(object taskId)
{
    lock (userStateToLifetime.SyncRoot)
    {
        object obj = userStateToLifetime[taskId];
        if (obj != null)
        {
            AsyncOperation asyncOp = obj as AsyncOperation;

            int numberToTest = 0;
            int firstDivisor = 1;
            bool isPrime = false;
            Exception exception = null;
            bool canceled = true;

            CalculatePrimeCompletedEventArgs e =
                new CalculatePrimeCompletedEventArgs(
                numberToTest,
                firstDivisor,
                isPrime,
                exception,
                canceled,
                asyncOp.UserSuppliedState);

            // The asyncOp object is responsible for 
            // marshaling the call to the proper 
            // thread or context.
            asyncOp.PostOperationCompleted(
                onCompletedDelegate,
                e);
        }
    }
}
public void CancelAsync(Object taskId)
{
    synchronized (userStateToLifetime.get_SyncRoot()) {
        Object obj = userStateToLifetime.get_Item(taskId);
        if (obj != null) {
            AsyncOperation asyncOp = (AsyncOperation)obj;

            int numberToTest = 0;
            int firstDivisor = 1;
            boolean isPrime = false;
            Exception exception = null;
            boolean cancelled = true;

            CalculatePrimeCompletedEventArgs e = 
                new CalculatePrimeCompletedEventArgs(numberToTest,
 
                firstDivisor, isPrime, exception, cancelled, 
                asyncOp.get_UserSuppliedState());
            // The asyncOp object is responsible for 
            // marshalling the call to the proper 
            // thread or context.
            asyncOp.PostOperationCompleted(onCompletedDelegate, e);
        }
    }
} //CancelAsync
public void CancelAsync(Object taskId)
{
    synchronized (userStateToLifetime.get_SyncRoot()) {
        Object obj = userStateToLifetime.get_Item(taskId);
        if (obj != null) {
            AsyncOperation asyncOp = (AsyncOperation)obj;
            int numberToTest = 0;
            int firstDivisor = 1;
            boolean isPrime = false;
            System.Exception exception = null;
            boolean cancelled = true;

            CalculatePrimeCompletedEventArgs e = 
                new CalculatePrimeCompletedEventArgs(numberToTest,
 
                firstDivisor, isPrime, exception, cancelled, 
                asyncOp.get_UserSuppliedState());
            // The asyncOp object is responsible for 
            // marshalling the call to the proper 
            // thread or context.
            asyncOp.PostOperationCompleted(onCompletedDelegate, e);
        }
    }
} //CancelAsync
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


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

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

辞書ショートカット

すべての辞書の索引

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

   

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



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

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

©2025 GRAS Group, Inc.RSS