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

AsyncResult クラス

非同期デリゲートでの非同期操作結果カプセル化ます。

名前空間: System.Runtime.Remoting.Messaging
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public Class AsyncResult
    Implements IAsyncResult, IMessageSink
[ComVisibleAttribute(true)] 
public class AsyncResult : IAsyncResult, IMessageSink
[ComVisibleAttribute(true)] 
public ref class AsyncResult : IAsyncResult,
 IMessageSink
/** @attribute ComVisibleAttribute(true) */ 
public class AsyncResult implements IAsyncResult,
 IMessageSink
ComVisibleAttribute(true) 
public class AsyncResult implements IAsyncResult,
 IMessageSink
解説解説
使用例使用例

非同期デリゲートでの非同期操作結果取得するために、AsyncResult クラス使用する方法次のコード例示します

Imports System
Imports System.Threading
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Contexts
Imports System.Runtime.Remoting.Messaging


' Context-bound type with the Synchronization context attribute.
<Synchronization()> Public Class SampleSyncronized
   Inherits ContextBoundObject
   
   ' A method that does some work, and returns the square of the given
 number.
   Public Function Square(i As
 Integer) As Integer
      
      Console.Write("The hash of the thread executing ")
      Console.WriteLine("SampleSyncronized.Square is: {0}",
 Thread.CurrentThread.GetHashCode())
      Return i * i
   End Function 'Square

End Class 'SampleSyncronized

' The async delegate used to call a method with this signature asynchronously.
Delegate Function SampSyncSqrDelegate(i As
 Integer) As Integer


Public Class AsyncResultSample
   
   ' Asynchronous Callback method.
   Public Shared Sub MyCallback(ar
 As IAsyncResult)
      ' Obtains the last parameter of the delegate call.
      Dim value As Integer
 = Convert.ToInt32(ar.AsyncState)
      
      ' Obtains return value from the delegate call using EndInvoke.
      Dim aResult As AsyncResult = CType(ar,
 AsyncResult)
      Dim temp As SampSyncSqrDelegate = CType(aResult.AsyncDelegate,
 SampSyncSqrDelegate)
      Dim result As Integer
 = temp.EndInvoke(ar)
      
      Console.Write("Simple.SomeMethod (AsyncCallback): Result
 of ")
      Console.WriteLine("{0} in SampleSynchronized.Square is {1}
 ", value, result)
   End Sub 'MyCallback  

   Public Shared Sub Main()
      
      Dim result As Integer
      Dim param As Integer
      
      ' Creates an instance of a context-bound type SampleSynchronized.
      Dim sampSyncObj As New
 SampleSyncronized()
      
      ' Checks whether the object is a proxy, since it is context-bound.
      If RemotingServices.IsTransparentProxy(sampSyncObj) Then
         Console.WriteLine("sampSyncObj is a proxy.")
      Else
         Console.WriteLine("sampSyncObj is NOT a proxy.")
      End If 

      param = 10
      
      Console.WriteLine("")
      Console.WriteLine("Making a synchronous call on the context-bound
 object:")
      
      result = sampSyncObj.Square(param)
      Console.Write("The result of calling sampSyncObj.Square
 with ")
      Console.WriteLine("{0} is {1}.", param, result)
      Console.WriteLine("")     

      Dim sampleDelegate As New
 SampSyncSqrDelegate(AddressOf sampSyncObj.Square)
      param = 8
      
      Console.WriteLine("Making a single asynchronous call on
 the context-bound object:")
      
      Dim ar1 As IAsyncResult = sampleDelegate.BeginInvoke(param,
 New AsyncCallback(AddressOf AsyncResultSample.MyCallback),
 param)
      
      Console.WriteLine("Waiting for the asynchronous call to
 complete...")
      Dim wh As WaitHandle = ar1.AsyncWaitHandle
      wh.WaitOne()
      
      Console.WriteLine("")
      Console.WriteLine("Waiting for the AsyncCallback to complete...")
      Thread.Sleep(1000)
   End Sub 'Main 
End Class 'AsyncResultSample 
using System;
using System.Threading;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Contexts;
using System.Runtime.Remoting.Messaging;

// Context-bound type with the Synchronization context attribute.
[Synchronization()]
public class SampleSyncronized : ContextBoundObject
 {

    // A method that does some work, and returns the square of the given
 number.
    public int Square(int
 i)  {

        Console.Write("The hash of the thread executing ");
        Console.WriteLine("SampleSyncronized.Square is: {0}", 
                             Thread.CurrentThread.GetHashCode());
        return i*i;
    }
}

// The async delegate used to call a method with this signature asynchronously.
public delegate int SampSyncSqrDelegate(int
 i);

public class AsyncResultSample {

    // Asynchronous Callback method.
    public static void MyCallback(IAsyncResult
 ar) {

        // Obtains the last parameter of the delegate call.
        int value = Convert.ToInt32(ar.AsyncState);

        // Obtains return value from the delegate call using EndInvoke.
        AsyncResult aResult = (AsyncResult)ar;
        SampSyncSqrDelegate temp = (SampSyncSqrDelegate)aResult.AsyncDelegate;
        int result = temp.EndInvoke(ar);

        Console.Write("Simple.SomeMethod (AsyncCallback): Result of ");
        Console.WriteLine("{0} in SampleSynchronized.Square
 is {1} ", value, result);
    }

    public static void Main()
 {

        int result;
        int param;

        // Creates an instance of a context-bound type SampleSynchronized.
        SampleSyncronized sampSyncObj = new SampleSyncronized();

        // Checks whether the object is a proxy, since it is context-bound.
        if (RemotingServices.IsTransparentProxy(sampSyncObj))
            Console.WriteLine("sampSyncObj is a proxy.");
        else
            Console.WriteLine("sampSyncObj is NOT a proxy.");

        param = 10;

        Console.WriteLine("");
        Console.WriteLine("Making a synchronous call on the context-bound object:");

        result = sampSyncObj.Square(param);
        Console.Write("The result of calling sampSyncObj.Square with ");
        Console.WriteLine("{0} is {1}.", param, result);
        Console.WriteLine("");

        SampSyncSqrDelegate sampleDelegate = new SampSyncSqrDelegate(sampSyncObj.Square);
        param = 8;

        Console.WriteLine("Making a single asynchronous call on the context-bound
 object:");

        IAsyncResult ar1 = sampleDelegate.BeginInvoke( param, 
                              new AsyncCallback(AsyncResultSample.MyCallback),
 
                              param);

        Console.WriteLine("Waiting for the asynchronous call
 to complete...");
        WaitHandle wh = ar1.AsyncWaitHandle;
        wh.WaitOne();

        Console.WriteLine("");
        Console.WriteLine("Waiting for the AsyncCallback
 to complete...");
        Thread.Sleep(1000);
    }
}
using namespace System;
using namespace System::Threading;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Contexts;
using namespace System::Runtime::Remoting::Messaging;

// Context-bound type with the Synchronization context attribute.

[Synchronization]
public ref class SampleSyncronized: public
 ContextBoundObject
{
public:

   // A method that does some work, and returns the square of the given
 number.
   int Square( int i )
   {
      Console::Write( "The hash of the thread executing " );
      Console::WriteLine( "SampleSyncronized::Square is: {0}", Thread::CurrentThread->GetHashCode()
 );
      return i * i;
   }

};

// The async delegate used to call a method with this signature asynchronously.
int i );
public ref class AsyncResultSample
{
public:

   // Asynchronous Callback method.
   static void MyCallback( IAsyncResult^ ar
 )
   {
      
      // Obtains the last parameter of the delegate call.
      int value = Convert::ToInt32( ar->AsyncState );
      
      // Obtains return value from the delegate call using EndInvoke.
      AsyncResult^ aResult = dynamic_cast<AsyncResult^>(ar);
      SampSyncSqrDelegate^ temp = static_cast<SampSyncSqrDelegate^>(aResult->AsyncDelegate);
      int result = temp->EndInvoke( ar );
      Console::Write( "Simple::SomeMethod (AsyncCallback): Result of "
 );
      Console::WriteLine( " {0} in SampleSynchronized::Square
 is {1} ", value, result );
   }

};

int main()
{
   int result;
   int param;
   
   // Creates an instance of a context-bound type SampleSynchronized.
   SampleSyncronized^ sampSyncObj = gcnew SampleSyncronized;
   
   // Checks whether the Object* is a proxy, since it is context-bound.
   if ( RemotingServices::IsTransparentProxy( sampSyncObj ) )
      Console::WriteLine( "sampSyncObj is a proxy." );
   else
      Console::WriteLine( "sampSyncObj is NOT a proxy." );

   
   param = 10;
   Console::WriteLine( "" );
   Console::WriteLine( "Making a synchronous call on the context-bound Object*:"
 );
   result = sampSyncObj->Square( param );
   Console::Write( "The result of calling sampSyncObj.Square with " );
   Console::WriteLine( " {0} is {1}.", param, result );
   Console::WriteLine( "" );
   
   SampSyncSqrDelegate^ sampleDelegate = gcnew SampSyncSqrDelegate( sampSyncObj,
 &SampleSyncronized::Square );
   param = 8;
   Console::WriteLine( "Making a single asynchronous call on the context-bound
 Object*:" );
   IAsyncResult^ ar1 = sampleDelegate->BeginInvoke( param, gcnew AsyncCallback(
 AsyncResultSample::MyCallback ), param );
   Console::WriteLine( "Waiting for the asynchronous call
 to complete..." );
   WaitHandle^ wh = ar1->AsyncWaitHandle;
   wh->WaitOne();
   Console::WriteLine( "" );
   Console::WriteLine( "Waiting for the AsyncCallback to
 complete..." );
   Thread::Sleep( 1000 );
   return 0;
   
}

import System.*;
import System.Threading.*;
import System.Runtime.Remoting.*;
import System.Runtime.Remoting.Contexts.*;
import System.Runtime.Remoting.Messaging.*;

// Context-bound type with the Synchronization context attribute.
/** @attribute Synchronization()
 */
public class SampleSyncronized extends ContextBoundObject
{
    // A method that does some work, and returns the square of the given
 number.
    public int Square(int
 i)
    {
        Console.Write("The hash of the thread executing ");
        Console.WriteLine("SampleSyncronized.Square is: {0}",
            (Int32)System.Threading.Thread.get_CurrentThread().GetHashCode());
        return i * i;
    } //Square
} //SampleSyncronized

// The async delegate used to call a method with this signature asynchronously.
/** @delegate 
 */
public delegate int SampSyncSqrDelegate(int
 i);

public class AsyncResultSample
{
    static int value;
    // Asynchronous Callback method.
    public static void MyCallback(IAsyncResult
 ar)
    {
        // Obtains the last parameter of the delegate call.
        SampSyncSqrDelegate sampDelg = (SampSyncSqrDelegate)ar.get_AsyncState();
        
        // Obtains return value from the delegate call using EndInvoke.
        AsyncResult aResult = (AsyncResult)ar;
        SampSyncSqrDelegate temp =
            (SampSyncSqrDelegate)(aResult.get_AsyncDelegate());
        int threadId = AppDomain.GetCurrentThreadId();
        int result = temp.EndInvoke(ar);

        Console.Write("Simple.SomeMethod (AsyncCallback): Result of ");
        Console.WriteLine("{0} in SampleSynchronized.Square
 is {1} ",
            (Int32)value, (Int32)result);
    } //MyCallback

    public static void main(String[]
 args)
    {
        int result;
        int param;
        // Creates an instance of a context-bound type SampleSynchronized.
        SampleSyncronized sampSyncObj = new SampleSyncronized();
        // Checks whether the object is a proxy, since it is context-bound.
        if (RemotingServices.IsTransparentProxy(sampSyncObj))
 {
            Console.WriteLine("sampSyncObj is a proxy.");
        }
        else {
            Console.WriteLine("sampSyncObj is NOT a proxy.");
        }

        param = 10;
        Console.WriteLine("");
        Console.WriteLine("Making a synchronous call on the context-bound "
            + "object:");
        result = sampSyncObj.Square(param);
        Console.Write("The result of calling sampSyncObj.Square with ");
        Console.WriteLine("{0} is {1}.", (Int32)param, (Int32)result);
        Console.WriteLine("");

        SampSyncSqrDelegate sampleDelegate =
            new SampSyncSqrDelegate(sampSyncObj.Square);
        param = 8;
        value = param;
        Console.WriteLine("Making a single asynchronous call on the "
            + "context-bound object:");
        IAsyncResult ar1 = sampleDelegate.BeginInvoke(param,
            new AsyncCallback(AsyncResultSample.MyCallback), sampleDelegate);

        Console.WriteLine("Waiting for the asynchronous call
 to complete...");
        WaitHandle wh = ar1.get_AsyncWaitHandle();

        wh.WaitOne();
        Console.WriteLine("");
        Console.WriteLine("Waiting for the AsyncCallback
 to complete...");
        System.Threading.Thread.Sleep(1000);
    } //main 
} //AsyncResultSample
継承階層継承階層
System.Object
  System.Runtime.Remoting.Messaging.AsyncResult
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

AsyncResult プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ AsyncDelegate 非同期呼び出しが行われたデリゲート オブジェクト取得します
パブリック プロパティ AsyncState BeginInvoke メソッド呼び出し最後パラメータ指定されオブジェクト取得します
パブリック プロパティ AsyncWaitHandle Win32 同期ハンドルカプセル化し、各種同期スキーム実装できるようにする WaitHandle を取得します
パブリック プロパティ CompletedSynchronously BeginInvoke呼び出し同期的完了したかどうかを示す値を取得します
パブリック プロパティ EndInvokeCalled EndInvoke現在の AsyncResult で呼び出されたかどうかを示す値を取得または設定します
パブリック プロパティ IsCompleted サーバー呼び出し完了したかどうかを示す値を取得します
パブリック プロパティ NextSink シンク チェイン内の次のメッセージ シンク取得します
参照参照

関連項目

AsyncResult クラス
System.Runtime.Remoting.Messaging 名前空間

その他の技術情報

デリゲート使用した非同期プログラミング

AsyncResult メソッド


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

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

関連項目

AsyncResult クラス
System.Runtime.Remoting.Messaging 名前空間

その他の技術情報

デリゲート使用した非同期プログラミング

AsyncResult メンバ

非同期デリゲートでの非同期操作結果カプセル化ます。

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


パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ AsyncDelegate 非同期呼び出しが行われたデリゲート オブジェクト取得します
パブリック プロパティ AsyncState BeginInvoke メソッド呼び出し最後パラメータ指定されオブジェクト取得します
パブリック プロパティ AsyncWaitHandle Win32 同期ハンドルカプセル化し、各種同期スキーム実装できるようにする WaitHandle を取得します
パブリック プロパティ CompletedSynchronously BeginInvoke呼び出し同期的完了したかどうかを示す値を取得します
パブリック プロパティ EndInvokeCalled EndInvoke現在の AsyncResult で呼び出されたかどうかを示す値を取得または設定します
パブリック プロパティ IsCompleted サーバー呼び出し完了したかどうかを示す値を取得します
パブリック プロパティ NextSink シンク チェイン内の次のメッセージ シンク取得します
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

AsyncResult クラス
System.Runtime.Remoting.Messaging 名前空間

その他の技術情報

デリゲート使用した非同期プログラミング



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

辞書ショートカット

すべての辞書の索引

「AsyncResult」の関連用語

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

   

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



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

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

©2025 GRAS Group, Inc.RSS