次の方法で共有


LogicalMethodInfo.EndInvoke メソッド

現在の LogicalMethodInfo で表されているメソッドの非同期呼び出しを終了します。

Public Function EndInvoke( _
   ByVal target As Object, _   ByVal asyncResult As IAsyncResult _) As Object()
[C#]
public object[] EndInvoke(objecttarget,IAsyncResultasyncResult);
[C++]
public: Object* EndInvoke(Object* target,IAsyncResult* asyncResult)  __gc[];
[JScript]
public function EndInvoke(
   target : Object,asyncResult : IAsyncResult) : Object[];

パラメータ

戻り値

派生クラス メソッドの戻り値、参照渡しパラメータまたは出力パラメータを格納しているオブジェクトの配列。

例外

例外の種類 条件
TargetException target パラメータが null 参照 (Visual Basic では Nothing) です。
MemberAccessException 呼び出し元に、このメソッドを呼び出すためのアクセス許可がありません。
TargetInvocationException 呼び出されたメソッドが例外をスローしました。

使用例

 
Public Shared Sub Main()

   ' Get the type information.
   ' Note: The MyMath class is a proxy class generated by the Wsdl.exe 
   ' utility for the Math Web Service. This class can also be found in
   ' the SoapHttpClientProtocol class example. 
   Dim myType As Type = GetType(MyMath.MyMath)

   ' Get the method info.
   Dim myBeginMethod As MethodInfo = myType.GetMethod("BeginAdd")
   Dim myEndMethod As MethodInfo = myType.GetMethod("EndAdd")

   ' Create an instance of the LogicalMethodInfo class.
   Dim myLogicalMethodInfo As LogicalMethodInfo = _
      LogicalMethodInfo.Create(New MethodInfo() {myBeginMethod, myEndMethod}, _
      LogicalMethodTypes.Async)(0)

   ' Get an instance of the proxy class.
   Dim myMathService As New MyMath.MyMath()

   ' Call the MyEndIntimationMethod method to intimate the end of 
   ' the asynchronous call.
   Dim myAsyncCallback As New AsyncCallback(AddressOf MyEndIntimationMethod)

   ' Beging to invoke the Add method.
   Dim myAsyncResult As IAsyncResult = _
      myLogicalMethodInfo.BeginInvoke( _
      myMathService, New Object() {10, 10}, myAsyncCallback, Nothing)

   ' Wait until invoke is complete.
   myAsyncResult.AsyncWaitHandle.WaitOne()

   ' Get the result.
   Dim myReturnValue() As Object
   myReturnValue = myLogicalMethodInfo.EndInvoke(myMathService, myAsyncResult)

   Console.WriteLine(("Sum of 10 and 10 is " & myReturnValue(0)))
End Sub

' This method will be called at the end of asynchronous call.
Shared Sub MyEndIntimationMethod(ByVal Result As IAsyncResult)
   Console.WriteLine("Asynchronous call on method 'Add' finished.")
End Sub


[C#] 
public static void Main()
{
   // Get the type information.
   // Note: The MyMath class is a proxy class generated by the Wsdl.exe
   // utility for the Math Web service. This class can also be found in 
   // the SoapHttpClientProtocol class example. 
   Type myType = typeof(MyMath.MyMath);

   // Get the method info.
   MethodInfo myBeginMethod = myType.GetMethod("BeginAdd");
   MethodInfo myEndMethod = myType.GetMethod("EndAdd");

   // Create an instance of the LogicalMethodInfo class.
   LogicalMethodInfo myLogicalMethodInfo = 
      (LogicalMethodInfo.Create(new MethodInfo[] {myBeginMethod,myEndMethod},
      LogicalMethodTypes.Async))[0];

   // Get an instance of the proxy class.
   MyMath.MyMath myMathService = new MyMath.MyMath();

   // Call the MyEndIntimationMethod method to intimate the end of 
   // the asynchronous call.
   AsyncCallback myAsyncCallback = new AsyncCallback(MyEndIntimationMethod);

   // Begin to invoke the Add method.
   IAsyncResult myAsyncResult = myLogicalMethodInfo.BeginInvoke(
      myMathService,new object[]{10,10},myAsyncCallback,null);
   
   // Wait until invoke is complete.
   myAsyncResult.AsyncWaitHandle.WaitOne();
   
   // Get the result.
   object[] myReturnValue;
   myReturnValue = myLogicalMethodInfo.EndInvoke(myMathService,myAsyncResult);
   
   Console.WriteLine("Sum of 10 and 10 is " + myReturnValue[0]);
}

// This method will be called at the end of the asynchronous call.
static void MyEndIntimationMethod(IAsyncResult Result)
{
   Console.WriteLine("Asynchronous call on Add method finished.");
}

[C++] 
public:
   static void main()
   {
      // Get the type information.
      // Note: The MyMath class is a proxy class generated by the Wsdl.exe
      // utility for the Math Web service. This class can also be found in
      // the SoapHttpClientProtocol class example.
      Type* myType = __typeof(MyMath::MyMath);

      // Get the method info.
      MethodInfo* myBeginMethod = myType->GetMethod(S"BeginAdd");
      MethodInfo* myEndMethod = myType->GetMethod(S"EndAdd");

      // Create an instance of the LogicalMethodInfo class.
      MethodInfo* temp0 [] = {myBeginMethod,myEndMethod};
      LogicalMethodInfo* myLogicalMethodInfo =
         (LogicalMethodInfo::Create(temp0,
         LogicalMethodTypes::Async))[0];

      // Get an instance of the proxy class.
      MyMath::MyMath* myMathService = new MyMath::MyMath();

      // Call the MyEndIntimationMethod method to intimate the end of
      // the asynchronous call.
      AsyncCallback* myAsyncCallback = new AsyncCallback(0, MyEndIntimationMethod);

      // Begin to invoke the Add method.
      Object* temp1 [] = {__box(10),__box(10)};
      IAsyncResult* myAsyncResult = myLogicalMethodInfo->BeginInvoke(
         myMathService,temp1,myAsyncCallback,0);

      // Wait until invoke is complete.
      myAsyncResult->AsyncWaitHandle->WaitOne();

      // Get the result.
      Object* myReturnValue[];
      myReturnValue = myLogicalMethodInfo->EndInvoke(myMathService,myAsyncResult);

      Console::WriteLine(S"Sum of 10 and 10 is {0}", myReturnValue[0]);
   }

   // This method will be called at the end of the asynchronous call.
   static void MyEndIntimationMethod(IAsyncResult* /*Result*/)
   {
      Console::WriteLine(S"Asynchronous call on Add method finished.");
   }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

LogicalMethodInfo クラス | LogicalMethodInfo メンバ | System.Web.Services.Protocols 名前空間