LogicalMethodInfo.AsyncCallbackParameter Property

Gets the parameter information for the AsyncCallback parameter of a Begin method in an asynchronous invocation.

Namespace: System.Web.Services.Protocols
Assembly: System.Web.Services (in system.web.services.dll)

public:
property ParameterInfo^ AsyncCallbackParameter {
	ParameterInfo^ get ();
}
/** @property */
public ParameterInfo get_AsyncCallbackParameter ()

public function get AsyncCallbackParameter () : ParameterInfo

Not applicable.

Property Value

A ParameterInfo representing the AsyncCallback parameter of a Begin asynchronous method invocation.

The asynchronous design pattern in the common language runtime involves calling a Begin method to start the asynchronous method invocation and an End method to complete the invocation. The Begin method takes two additional parameters besides the parameters defined by the synchronous version of the method: one to store a delegate and one to store any state information that needs to be passed on to the delegate. This property represents the parameter for the delegate with a parameter name of AsyncCallback.

For more information on invoking XML Web services asynchronously, see Communicating with XML Web Services Asynchronously.

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

using namespace System;
using namespace System::Reflection;
using namespace System::Web::Services::Protocols;

public ref class MyService: public SoapHttpClientProtocol
{
public:
   IAsyncResult^ BeginAdd( int xValue, int yValue, AsyncCallback^ callback, Object^ asyncState )
   {
      array<Object^>^temp0 = {xValue,yValue};
      return this->BeginInvoke( "Add", temp0, callback, asyncState );
   }

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

int main()
{
   Type^ myType = MyService::typeid;
   MethodInfo^ myBeginMethod = myType->GetMethod( "BeginAdd" );
   MethodInfo^ myEndMethod = myType->GetMethod( "EndAdd" );
   array<MethodInfo^>^temp0 = {myBeginMethod,myEndMethod};
   LogicalMethodInfo^ myLogicalMethodInfo = LogicalMethodInfo::Create( temp0, LogicalMethodTypes::Async )[ 0 ];
   Console::WriteLine( "\nThe asynchronous callback parameter of method {0} is :\n", myLogicalMethodInfo->Name );
   Console::WriteLine( "\t {0} : {1}", myLogicalMethodInfo->AsyncCallbackParameter->Name, myLogicalMethodInfo->AsyncCallbackParameter->ParameterType );
   Console::WriteLine( "\nThe asynchronous state parameter of method {0} is :\n", myLogicalMethodInfo->Name );
   Console::WriteLine( "\t {0} : {1}", myLogicalMethodInfo->AsyncStateParameter->Name, myLogicalMethodInfo->AsyncStateParameter->ParameterType );
   Console::WriteLine( "\nThe asynchronous result parameter of method {0} is :\n", myLogicalMethodInfo->Name );
   Console::WriteLine( "\t {0} : {1}", myLogicalMethodInfo->AsyncResultParameter->Name, myLogicalMethodInfo->AsyncResultParameter->ParameterType );
   Console::WriteLine( "\nThe begin method of the asynchronous method {0} is :\n", myLogicalMethodInfo->Name );
   Console::WriteLine( "\t {0}", myLogicalMethodInfo->BeginMethodInfo );
   Console::WriteLine( "\nThe end method of the asynchronous method {0} is :\n", myLogicalMethodInfo->Name );
   Console::WriteLine( "\t {0}", myLogicalMethodInfo->EndMethodInfo );
   if ( myLogicalMethodInfo->IsAsync )
      Console::WriteLine( "\n {0} is asynchronous", myLogicalMethodInfo->Name );
   else
      Console::WriteLine( "\n {0} is synchronous", myLogicalMethodInfo->Name );
}

import System.*;
import System.Reflection.*;
import System.Web.Services.Protocols.*;

public class MyService extends SoapHttpClientProtocol
{
    public IAsyncResult BeginAdd(int xValue, int yValue, AsyncCallback callback,
        Object asyncState)
    {
        return this.BeginInvoke("Add", new Object[] { (Int32)xValue, 
            (Int32)yValue }, callback, asyncState);
    } //BeginAdd

    public int EndAdd(System.IAsyncResult asyncResult)
    {
        Object results[] = this.EndInvoke(asyncResult);
        return Convert.ToInt32(results.get_Item(0));
    } //EndAdd
} //MyService

public class LogicalMethodInfo_Create
{
    public static void main(String[] args)
    {
        Type myType = MyService.class.ToType();
        MethodInfo myBeginMethod = myType.GetMethod("BeginAdd");
        MethodInfo myEndMethod = myType.GetMethod("EndAdd");
        LogicalMethodInfo myLogicalMethodInfo = 
            ((LogicalMethodInfo)((LogicalMethodInfo[])LogicalMethodInfo.
            Create(new MethodInfo[] { myBeginMethod, myEndMethod }, 
            LogicalMethodTypes.Async)).get_Item(0));

        Console.WriteLine("\nThe asynchronous callback parameter "
            + "of method {0} is :\n", myLogicalMethodInfo.get_Name());
        Console.WriteLine("\t" 
            + myLogicalMethodInfo.get_AsyncCallbackParameter().get_Name() 
            + " : " + myLogicalMethodInfo.get_AsyncCallbackParameter().
            get_ParameterType());

        Console.WriteLine("\nThe asynchronous state parameter "
            + "of method {0} is :\n", myLogicalMethodInfo.get_Name());
        Console.WriteLine("\t" 
            + myLogicalMethodInfo.get_AsyncStateParameter().get_Name() + " : " 
            + myLogicalMethodInfo.get_AsyncStateParameter().
            get_ParameterType());

        Console.WriteLine("\nThe asynchronous result parameter "
            + "of method {0} is :\n", myLogicalMethodInfo.get_Name());
        Console.WriteLine("\t" 
            + myLogicalMethodInfo.get_AsyncResultParameter().get_Name() + " : " 
            + myLogicalMethodInfo.get_AsyncResultParameter().
            get_ParameterType());

        Console.WriteLine("\nThe begin method of the asynchronous "
            + "method {0} is :\n", myLogicalMethodInfo.get_Name());
        Console.WriteLine("\t" + myLogicalMethodInfo.get_BeginMethodInfo());

        Console.WriteLine("\nThe end method of the asynchronous "
            + "method {0} is :\n", myLogicalMethodInfo.get_Name());
        Console.WriteLine("\t" + myLogicalMethodInfo.get_EndMethodInfo());

        if (myLogicalMethodInfo.get_IsAsync()) {
            Console.WriteLine("\n{0} is asynchronous", 
                myLogicalMethodInfo.get_Name());
        }
        else {
            Console.WriteLine("\n{0} is synchronous", 
                myLogicalMethodInfo.get_Name());
        }
    } //main
} //LogicalMethodInfo_Create

Windows 98, Windows Server 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

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

Community Additions

ADD
Show: