SoapHttpClientProtocol.BeginInvoke Method

Starts an asynchronous invocation of an XML Web service method using SOAP.

Namespace: System.Web.Services.Protocols
Assembly: System.Web.Services (in

IAsyncResult^ BeginInvoke (
	String^ methodName, 
	array<Object^>^ parameters, 
	AsyncCallback^ callback, 
	Object^ asyncState
protected IAsyncResult BeginInvoke (
	String methodName, 
	Object[] parameters, 
	AsyncCallback callback, 
	Object asyncState
protected function BeginInvoke (
	methodName : String, 
	parameters : Object[], 
	callback : AsyncCallback, 
	asyncState : Object
) : IAsyncResult
Not applicable.



The name of the XML Web service method in the derived class that is invoking the BeginInvoke method.


An array of objects containing the parameters to pass to the XML Web service. The order of the values in the array correspond to the order of the parameters in the calling method of the derived class.


The delegate to call when the asynchronous invoke is complete. If callback is a null reference (Nothing in Visual Basic), the delegate is not called.


Extra information supplied by the caller.

Return Value

An IAsyncResult that is passed to the EndInvoke method to obtain the return values from the remote method call.

Exception typeCondition


The request reached the server computer, but was not processed successfully.

Typically, you would not call the BeginInvoke method directly, unless you were building your own proxy class for an XML Web service.

A proxy class generated by the Web Services Description Language tool (Wsdl.exe) from a Service Description exposes the XML Web service methods as names derived from the proxy class to call the XML Web service methods synchronously. To call the XML Web service methods asynchronously, two additional methods are added to the proxy class for each XML Web service method, one with the Begin prefix added to the name of the XML Web service method and one with the End prefix added.

The proxy class calls the BeginInvoke method to start an asynchronous invocation call to the XML Web service method. For example, if an XML Web service exposes an XML Web service method named Add, the proxy class contains a method named BeginAdd, for starting an invocation to the XML Web service method. Within the code for the BeginAdd, a call is made to the BeginInvoke method and the results are placed into the expected return type for Add.

The methodName is used to find the custom attributes which may have been added to the method, such as SoapDocumentMethodAttribute. SoapDocumentMethodAttribute provides additional information about the derived method that is required for the SOAP protocol.

asyncState is passed into callback and is included in the IAsyncResult that is returned from the BeginInvoke method. The asyncState parameter can be used to pass information about the context of the asynchronous call, specified in the callback parameter, to the delegate that handles the result.

The following code example is a proxy class generated by the Web Services Description Language tool (Wsdl.exe) for the Math XML Web service. Within the BeginAdd method of the proxy class, the BeginInvoke method is starting an asynchronous invocation to the Add XML Web service method.

#using <System.Web.Services.dll>
#using <System.Xml.dll>
#using <System.dll>

using namespace System::Diagnostics;
using namespace System::Xml::Serialization;
using namespace System;
using namespace System::Web::Services::Protocols;
using namespace System::Web::Services;

namespace MyMath

   public ref class MyMath: public System::Web::Services::Protocols::SoapHttpClientProtocol

         this->Url = "";

      int Add( int num1, int num2 )
         array<Object^>^temp1 = {num1,num2};
         array<Object^>^results = this->Invoke( "Add", temp1 );
         return  *dynamic_cast<int^>(results[ 0 ]);

      System::IAsyncResult^ BeginAdd( int num1, int num2, System::AsyncCallback^ callback, Object^ asyncState )
         array<Object^>^temp2 = {num1,num2};
         return this->BeginInvoke( "Add", temp2, callback, asyncState );

      int EndAdd( System::IAsyncResult^ asyncResult )
         array<Object^>^results = this->EndInvoke( asyncResult );
         return  *dynamic_cast<int^>(results[ 0 ]);



package MyMath; 

import System.Diagnostics.*;
import System.Xml.Serialization.*;
import System.*;
import System.Web.Services.Protocols.*;
import System.Web.Services.*;

/** @attribute System.Web.Services.WebServiceBindingAttribute(Name = 
    "MyMathSoap", Namespace = "")

public class MyMath extends System.Web.Services.Protocols.SoapHttpClientProtocol
    /** @attribute System.Diagnostics.DebuggerStepThroughAttribute()

    public MyMath()
    } //MyMath

    /** @attribute System.Diagnostics.DebuggerStepThroughAttribute()
    /** @attribute System.Web.Services.Protocols.SoapDocumentMethodAttribute(
         "", RequestNamespace = 
        "", ResponseNamespace = 
        "", Use = 
        System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle 
        = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)

    public int Add(int num1, int num2)
        Object results[] = this.Invoke("Add", new Object[] { 
            (Int32)num1, (Int32)num2 });
        return (int)((Int32)results.get_Item(0));
    } //Add

    /** @attribute System.Diagnostics.DebuggerStepThroughAttribute()

    public System.IAsyncResult BeginAdd(int num1, int num2, 
        System.AsyncCallback callback, Object asyncState)
        return this.BeginInvoke("Add", new Object[] { 
            (Int32)num1, (Int32)num2 }, callback, asyncState);
    } //BeginAdd

    /** @attribute System.Diagnostics.DebuggerStepThroughAttribute()

    public int EndAdd(System.IAsyncResult asyncResult)
        Object results[] = this.EndInvoke(asyncResult);
        return (int)((Int32)results.get_Item(0));
    } //EndAdd
} //MyMath

The following code example is the Math XML Web service, from which the preceding proxy class was created.

No code example is currently available or this language may not be supported.
<%@ WebService Language="VJ#" Class="MyMath"%>
import System.Web.Services .* ;
import System .* ;

/** @attribute WebService(Namespace = "")
* */
public class MyMath
   /** @attribute WebMethod()
   * */
   public int Add(int num1, int num2) 
      return num1 + num2 ;

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0