我创建了一个事件来管理流程的执行结束
' <summary>
' Event raised when CoreConverter process has exited.
' </summary>
Public Shared Event Exited As EventHandler(Of ExitedEventArgs)
Public Class ExitedEventArgs : Inherits EventArgs
Public Property Message As String
End Class
当进程退出时会引发事件,以发送包含信息消息或错误消息的消息。
当进程退出时,我只返回一条消息,例如,如果erroroutput为空,那么我发送StandardOutput,但如果ErrorOutput不为空,那么我只发送ErrorOutput。
Select Case CoreConverter.ExitCode
Case 0
RaiseEvent Exited(StandardOutput, Nothing) ' Return StandardOutput
Case Else
RaiseEvent Exited(ErrorOutput, Nothing) ' Return ErrorOutput
End Select
我想做的是更专业,以便能够管理“e”变量中的两种消息类型(我认为这是正确的方法,如果我错了请告诉我)
Private sub ProcessExited(byval Message as string, byval e as eventargs) _
handles myClass.Exited
' here I want to be able to manage both message types like this:
msgbox(e.ErrorOutput)
msgbox(e.StandardOutput)
end sub
我真的想这样做也是为了添加更多可以通过“e”变量加入的信息,就像我在其他第三方类中看到的那样,例如:
msgbox(e.ProcessHandle)
msgbox(e.ToalExecutionTime)
msgbox(e.SomeExtraInfo)
我在MSDN中搜索了如何制作自定义“e”成员,但我找不到任何内容,所以我不知道如何开始这样做。
答案 0 :(得分:2)
你是如此接近,你只需要为你传递的类别添加更多属性为“e”。
Public Class ExitedEventArgs : Inherits EventArgs
Public Property ErrorOutput As String
Public Property StandardOutput As String
Public Property SomeExtraInfo as String
End Class
当您定义事件时,请执行以下操作:(从未看到它被声明为通用???)
Public Shared Event Exited As EventHandler(byval sender as object,byval e as ExitedEventArgs)
这允许你传递WHAT正在调用事件,有时非常有用,以及你的事件args的实例(注意“as ExitedEventArgs”)。
然后当你打电话时,你可能会这样做:
Dim x as new ExitedEventArgs
x.ErrorOutput = "Your Error"
x.StandardOutput = "Some Output text"
x.SomeExtraInfo = "You extra info here"
RaiseEvent Exited(me,x)
答案 1 :(得分:1)
您可以像这样简单地创建自己的事件arg类:
Friend Class MyEventArgs
Public Property Foo As String
Public Property Bar As Integer
Sub new(t1 as String, r2 As Integer)
Foo = t1
Bar = t2
End Sub
End Class
Public Event MyEvent(ByVal ea As MyEventArgs)
举办活动:
Protected Friend Sub MakeEvent(ByVal ea As MyEventArgs)
RaiseEvent MyEvent(ea)
End Sub
它运行正常,然而如果你运行Code Analysis,它会告诉你它应该从EventArgs继承。所以,这样做,但你仍然可以追加自己的属性:
Friend Class MyEventArgs
Inherits From EventArgs
Public Property Foo As String
EventArgs中没有多大价值,但它让CA感到满意。