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 名前空間

その他の技術情報

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



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

「AsyncResult」の関連用語

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

   

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



AsyncResultのページの著作権

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

©2026 GRAS Group, Inc.RSS