LogicalMethodInfo.AsyncStateParameter Property
Gets the parameter information for the AsyncState parameter of a Begin method in an asynchronous invocation.
[Visual Basic] Public ReadOnly Property AsyncStateParameter As ParameterInfo [C#] public ParameterInfo AsyncStateParameter {get;} [C++] public: __property ParameterInfo* get_AsyncStateParameter(); [JScript] public function get AsyncStateParameter() : ParameterInfo;
Property Value
A ParameterInfo representing the AsyncState parameter of a Begin method in an asynchronous invocation.
Remarks
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 state information that needs to be passed into the delegate.For more information on invoking XML Web services asynchronously, see Communicating with XML Web Services Asynchronously.
Example
[Visual Basic] Imports System Imports System.Reflection Imports System.Web.Services.Protocols Imports Microsoft.VisualBasic Public Class MyService Inherits SoapHttpClientProtocol Public Function BeginAdd _ (xValue As Integer, yValue As Integer, callback As AsyncCallback, asyncState As Object) _ As IAsyncResult Return Me.BeginInvoke("Add", New Object() {xValue, yValue}, callback, asyncState) End Function 'BeginAdd Public Function EndAdd(asyncResult As System.IAsyncResult) As Integer Dim results As Object() = Me.EndInvoke(asyncResult) Return CInt(results(0)) End Function 'EndAdd End Class 'MyService Public Class LogicalMethodInfo_Create Public Shared Sub Main() Dim myType As Type = GetType(MyService) Dim myBeginMethod As MethodInfo = myType.GetMethod("BeginAdd") Dim myEndMethod As MethodInfo = myType.GetMethod("EndAdd") Dim myLogicalMethodInfo As LogicalMethodInfo = _ LogicalMethodInfo.Create(New MethodInfo() _ {myBeginMethod, myEndMethod}, LogicalMethodTypes.Async)(0) Console.WriteLine _ (ControlChars.Newline + "The asynchronous callback parameter of method {0} is :" + _ ControlChars.Newline, myLogicalMethodInfo.Name) Console.WriteLine _ (ControlChars.Tab + myLogicalMethodInfo.AsyncCallbackParameter.Name + " : " + _ myLogicalMethodInfo.AsyncCallbackParameter.ParameterType.ToString()) Console.WriteLine _ (ControlChars.Newline + "The asynchronous state parameter of method {0} is :" + _ ControlChars.Newline, myLogicalMethodInfo.Name) Console.WriteLine _ (ControlChars.Tab + myLogicalMethodInfo.AsyncStateParameter.Name + " : " + _ myLogicalMethodInfo.AsyncStateParameter.ParameterType.ToString()) Console.WriteLine _ (ControlChars.Newline + "The asynchronous result parameter of method {0} is :" + _ ControlChars.Newline, myLogicalMethodInfo.Name) Console.WriteLine _ (ControlChars.Tab + myLogicalMethodInfo.AsyncResultParameter.Name + " : " + _ myLogicalMethodInfo.AsyncResultParameter.ParameterType.ToString()) Console.WriteLine _ (ControlChars.Newline + "The begin method of the asynchronous method {0} is :" + _ ControlChars.Newline, myLogicalMethodInfo.Name) Console.WriteLine(ControlChars.Tab + myLogicalMethodInfo.BeginMethodInfo.ToString()) Console.WriteLine _ (ControlChars.Newline + "The end method of the asynchronous method {0} is :" + _ ControlChars.Newline, myLogicalMethodInfo.Name) Console.WriteLine(ControlChars.Tab + myLogicalMethodInfo.EndMethodInfo.ToString()) If myLogicalMethodInfo.IsAsync Then Console.WriteLine(ControlChars.Newline + "{0} is asynchronous", myLogicalMethodInfo.Name) Else Console.WriteLine(ControlChars.Newline + "{0} is synchronous", myLogicalMethodInfo.Name) End If End Sub 'Main End Class 'LogicalMethodInfo_Create [C#] using System; using System.Reflection; using System.Web.Services.Protocols; public class MyService : SoapHttpClientProtocol { public IAsyncResult BeginAdd(int xValue, int yValue, AsyncCallback callback, object asyncState) { return this.BeginInvoke("Add", new object[] {xValue,yValue}, callback, asyncState); } public int EndAdd(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((int)(results[0])); } } public class LogicalMethodInfo_Create { public static void Main() { Type myType = typeof(MyService); MethodInfo myBeginMethod = myType.GetMethod("BeginAdd"); MethodInfo myEndMethod = myType.GetMethod("EndAdd"); LogicalMethodInfo myLogicalMethodInfo = (LogicalMethodInfo.Create(new MethodInfo[] { myBeginMethod, myEndMethod }, LogicalMethodTypes.Async))[0]; Console.WriteLine("\nThe asynchronous callback parameter of method {0} is :\n", myLogicalMethodInfo.Name); Console.WriteLine("\t" + myLogicalMethodInfo.AsyncCallbackParameter.Name + " : " + myLogicalMethodInfo.AsyncCallbackParameter.ParameterType); Console.WriteLine("\nThe asynchronous state parameter of method {0} is :\n", myLogicalMethodInfo.Name); Console.WriteLine("\t" + myLogicalMethodInfo.AsyncStateParameter.Name + " : " + myLogicalMethodInfo.AsyncStateParameter.ParameterType); Console.WriteLine("\nThe asynchronous result parameter of method {0} is :\n", myLogicalMethodInfo.Name); Console.WriteLine("\t" + myLogicalMethodInfo.AsyncResultParameter.Name + " : " + myLogicalMethodInfo.AsyncResultParameter.ParameterType); Console.WriteLine("\nThe begin method of the asynchronous method {0} is :\n", myLogicalMethodInfo.Name); Console.WriteLine("\t" + myLogicalMethodInfo.BeginMethodInfo); Console.WriteLine("\nThe end method of the asynchronous method {0} is :\n", myLogicalMethodInfo.Name); Console.WriteLine("\t" + myLogicalMethodInfo.EndMethodInfo); if(myLogicalMethodInfo.IsAsync) Console.WriteLine("\n{0} is asynchronous", myLogicalMethodInfo.Name); else Console.WriteLine("\n{0} is synchronous", myLogicalMethodInfo.Name); } } [C++] #using <mscorlib.dll> #using <System.dll> #using <System.Web.dll> #using <System.Web.Services.dll> using namespace System; using namespace System::Reflection; using namespace System::Web::Services::Protocols; public __gc class MyService : public SoapHttpClientProtocol { public: IAsyncResult* BeginAdd(int xValue, int yValue, AsyncCallback* callback, Object* asyncState) { Object* temp0 [] = {__box(xValue), __box(yValue)}; return this->BeginInvoke(S"Add", temp0, callback, asyncState); } public: int EndAdd(System::IAsyncResult* asyncResult) { Object* results[] = this->EndInvoke(asyncResult); return *dynamic_cast<int __gc *>(results[0]); } }; int main() { Type* myType = __typeof(MyService); MethodInfo* myBeginMethod = myType->GetMethod(S"BeginAdd"); MethodInfo* myEndMethod = myType->GetMethod(S"EndAdd"); MethodInfo* temp0 [] = {myBeginMethod, myEndMethod}; LogicalMethodInfo* myLogicalMethodInfo = LogicalMethodInfo::Create(temp0, LogicalMethodTypes::Async)[0]; Console::WriteLine(S"\nThe asynchronous callback parameter of method {0} is :\n", myLogicalMethodInfo->Name); Console::WriteLine(S"\t {0} : {1}", myLogicalMethodInfo->AsyncCallbackParameter->Name, myLogicalMethodInfo->AsyncCallbackParameter->ParameterType); Console::WriteLine(S"\nThe asynchronous state parameter of method {0} is :\n", myLogicalMethodInfo->Name); Console::WriteLine(S"\t {0} : {1}", myLogicalMethodInfo->AsyncStateParameter->Name, myLogicalMethodInfo->AsyncStateParameter->ParameterType); Console::WriteLine(S"\nThe asynchronous result parameter of method {0} is :\n", myLogicalMethodInfo->Name); Console::WriteLine(S"\t {0} : {1}", myLogicalMethodInfo->AsyncResultParameter->Name, myLogicalMethodInfo->AsyncResultParameter->ParameterType); Console::WriteLine(S"\nThe begin method of the asynchronous method {0} is :\n", myLogicalMethodInfo->Name); Console::WriteLine(S"\t {0}", myLogicalMethodInfo->BeginMethodInfo); Console::WriteLine(S"\nThe end method of the asynchronous method {0} is :\n", myLogicalMethodInfo->Name); Console::WriteLine(S"\t {0}", myLogicalMethodInfo->EndMethodInfo); if (myLogicalMethodInfo->IsAsync) Console::WriteLine(S"\n {0} is asynchronous", myLogicalMethodInfo->Name); else Console::WriteLine(S"\n {0} is synchronous", myLogicalMethodInfo->Name); }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
See Also
LogicalMethodInfo Class | LogicalMethodInfo Members | System.Web.Services.Protocols Namespace | AsyncCallbackParameter | AsyncResultParameter | ParameterInfo | Communicating with XML Web Services Asynchronously