LogicalMethodInfo.BeginInvoke(Object, Object[], AsyncCallback, Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
开始对由此 LogicalMethodInfo 表示的方法的异步调用。
public:
IAsyncResult ^ BeginInvoke(System::Object ^ target, cli::array <System::Object ^> ^ values, AsyncCallback ^ callback, System::Object ^ asyncState);
public IAsyncResult BeginInvoke (object target, object[] values, AsyncCallback callback, object asyncState);
member this.BeginInvoke : obj * obj[] * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (target As Object, values As Object(), callback As AsyncCallback, asyncState As Object) As IAsyncResult
参数
- values
- Object[]
调用的方法的参数列表。 这是一个对象数组,其数量、顺序和类型与该方法的参数相同。 如果该方法不需要任何参数,values
应为 null
。
- callback
- AsyncCallback
异步调用完成时要调用的委托。 如果 callback
为 null
,则不调用委托。
- asyncState
- Object
传递到委托上的状态信息。
返回
IAsyncResult,传递给 EndInvoke(Object, IAsyncResult) 以从远程方法调用中获取返回值。
例外
target
参数为 null
。
values
中的参数的数量、类型和顺序与被调用的方法的签名不匹配。
调用方没有调用该方法的权限。
示例
public:
[PermissionSet(SecurityAction::Demand, Name="FullTrust")]
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 = MyMath::MyMath::typeid;
// Get the method info.
MethodInfo^ myBeginMethod = myType->GetMethod( "BeginAdd" );
MethodInfo^ myEndMethod = myType->GetMethod( "EndAdd" );
// Create an instance of the LogicalMethodInfo class.
array<MethodInfo^>^ temp0 = { myBeginMethod, myEndMethod };
LogicalMethodInfo^ myLogicalMethodInfo =
( LogicalMethodInfo::Create( temp0, LogicalMethodTypes::Async ) )[ 0 ];
// Get an instance of the proxy class.
MyMath::MyMath^ myMathService = gcnew MyMath::MyMath;
// Call the MyEndIntimationMethod method to intimate the end of
// the asynchronous call.
AsyncCallback^ myAsyncCallback = gcnew AsyncCallback( MyEndIntimationMethod );
// Begin to invoke the Add method.
array<Object^>^ temp1 = { 10, 10 };
IAsyncResult^ myAsyncResult = myLogicalMethodInfo->BeginInvoke(
myMathService, temp1, myAsyncCallback, nullptr );
// Wait until invoke is complete.
myAsyncResult->AsyncWaitHandle->WaitOne();
// Get the result.
array<Object^>^ myReturnValue;
myReturnValue = myLogicalMethodInfo->EndInvoke( myMathService, myAsyncResult );
Console::WriteLine( "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( "Asynchronous call on Add method finished." );
}
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.");
}
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