LogicalMethodInfo.AsyncResultParameter-Eigenschaft
Ruft den Rückgabewert bei einem asynchronen Aufruf einer Begin-Methode ab.
Namespace: System.Web.Services.Protocols
Assembly: System.Web.Services (in system.web.services.dll)
Syntax
'Declaration
Public ReadOnly Property AsyncResultParameter As ParameterInfo
'Usage
Dim instance As LogicalMethodInfo
Dim value As ParameterInfo
value = instance.AsyncResultParameter
public ParameterInfo AsyncResultParameter { get; }
public:
property ParameterInfo^ AsyncResultParameter {
ParameterInfo^ get ();
}
/** @property */
public ParameterInfo get_AsyncResultParameter ()
public function get AsyncResultParameter () : ParameterInfo
Eigenschaftenwert
Eine ParameterInfo, die das bei einem asynchronen Aufruf der Begin-Methode zurückgegebene IAsyncResult darstellt.
Hinweise
Das asynchrone Entwurfsmuster in der Common Language Runtime beinhaltet den Aufruf einer Begin-Methode, um den asynchronen Methodenaufruf zu starten, und einer End-Methode, um den Aufruf zu beenden. Die Begin-Methode wird i. d. R. sofort beendet und gibt ein Objekt zurück, das die IAsyncResult-Schnittstelle implementiert. Dieses Objekt kann zu einem späteren Zeitpunkt an die End-Methode übergeben werden, um den asynchronen Methodenaufruf zu beenden. Das zurückgegebene Objekt, das die IAsyncResult-Schnittstelle implementiert, wird durch diese Eigenschaft dargestellt.
Weitere Informationen über das asynchrone Aufrufen von XML-Webdiensten finden Sie unter Asynchrones Kommunizieren mit XML-Webdiensten.
Beispiel
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
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);
}
}
#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
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
LogicalMethodInfo-Klasse
LogicalMethodInfo-Member
System.Web.Services.Protocols-Namespace
IAsyncResult
AsyncStateParameter
LogicalMethodInfo.AsyncCallbackParameter-Eigenschaft
ParameterInfo