AsyncOperation.PostOperationCompleted メソッド
アセンブリ: System (system.dll 内)

Dim instance As AsyncOperation Dim d As SendOrPostCallback Dim arg As Object instance.PostOperationCompleted(d, arg)


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

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からAsyncOperation.PostOperationCompleted メソッドを検索する場合は、下記のリンクをクリックしてください。

- AsyncOperation.PostOperationCompleted メソッドのページへのリンク