CompletedEventHandler 委托
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示用来处理 Completed 事件的方法。
public delegate void CompletedEventHandler(System::Object ^ sender, CompletedEventArgs ^ e);
public delegate void CompletedEventHandler(object sender, CompletedEventArgs e);
type CompletedEventHandler = delegate of obj * CompletedEventArgs -> unit
Public Delegate Sub CompletedEventHandler(sender As Object, e As CompletedEventArgs)
参数
- sender
- Object
要为其调用此方法的对象的实例。
CompletedEventArgs,指定调用事件的原因。
示例
以下示例异步调用 方法。 调用 Win32_Process.Create 方法为 Calc.exe 创建新进程。
using System;
using System.Management;
public class InvokeMethodAsync
{
private bool isComplete = false;
private ManagementBaseObject returnObject;
public InvokeMethodAsync()
{
// Get the object on which the method
// will be invoked
ManagementClass processClass =
new ManagementClass("Win32_Process");
// Create a results and completion handler
ManagementOperationObserver handler =
new ManagementOperationObserver();
handler.Completed +=
new CompletedEventHandler(this.Completed);
// Invoke method asynchronously
ManagementBaseObject inParams =
processClass.GetMethodParameters("Create");
inParams["CommandLine"] = "calc.exe";
processClass.InvokeMethod(
handler, "Create", inParams, null);
// Do something while method is executing
while(!this.IsComplete)
{
System.Threading.Thread.Sleep(1000);
}
}
// Property allows accessing the result
// object in the main function
private ManagementBaseObject ReturnObject
{
get
{
return returnObject;
}
}
// Delegate called when the method completes
// and results are available
private void NewObject(object sender,
ObjectReadyEventArgs e)
{
Console.WriteLine("New Object arrived!");
returnObject = e.NewObject;
}
// Used to determine whether the method
// execution has completed
private bool IsComplete
{
get
{
return isComplete;
}
}
private void Completed(object sender,
CompletedEventArgs e)
{
isComplete = true;
Console.WriteLine("Method invoked.");
}
public static void Main()
{
InvokeMethodAsync invokeMethod = new InvokeMethodAsync();
return;
}
}
Imports System.Management
Public Class InvokeMethodAsync
Private isFinished As Boolean = False
Private returnObj As ManagementBaseObject
Public Sub New()
' Get the object on which the method
' will be invoked
Dim processClass As ManagementClass = _
New ManagementClass("Win32_Process")
' Create a results and completion handler
Dim handler As ManagementOperationObserver = _
New ManagementOperationObserver
AddHandler handler.Completed, _
AddressOf Me.Completed
' Invoke method asynchronously
Dim inParams As ManagementBaseObject = _
processClass.GetMethodParameters("Create")
inParams("CommandLine") = "calc.exe"
processClass.InvokeMethod( _
handler, "Create", inParams, Nothing)
' Do something while method is executing
While (Not Me.IsComplete)
System.Threading.Thread.Sleep(1000)
End While
End Sub
' Property allows accessing the result
' object in the main function
Private Function ReturnObject() As ManagementBaseObject
Return returnObj
End Function
' Delegate called when the method completes
' and results are available
Private Sub NewObject(ByVal sender As Object, _
ByVal e As ObjectReadyEventArgs)
Console.WriteLine("New Object arrived!")
returnObj = e.NewObject
End Sub
' Used to determine whether the method
' execution has completed
Private Function IsComplete() As Boolean
Return isFinished
End Function
Private Sub Completed(ByVal sender As Object, _
ByVal e As CompletedEventArgs)
isFinished = True
Console.WriteLine("Completed method invocation.")
End Sub
Public Shared Function _
Main(ByVal args() As String) As Integer
Dim invokeMethod As New InvokeMethodAsync
Return 0
End Function
End Class
扩展方法
GetMethodInfo(Delegate) |
获取指示指定委托表示的方法的对象。 |