我创建了一个事件来管理进程的执行端
' <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
该事件在进程退出时引发,以发送可能包含信息消息或错误消息的消息。
当进程退出时,我只返回一条消息,例如,如果错误输出为空,则发送标准输出,但如果错误输出不为空,则我只发送错误输出。
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"成员,但是找不到任何东西,因此我不知道如何开始执行此操作。
你是如此接近,你只需要向你作为"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)
这允许您传递调用事件的内容,有时非常有用,并且是事件参数的实例(请注意"作为 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)
您可以像这样简单地创建自己的事件参数类:
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
它工作正常,但是如果你运行代码分析,它会告诉你它应该继承自EventArgs。 因此,这样做,但您仍然可以附加自己的属性:
Friend Class MyEventArgs
Inherits From EventArgs
Public Property Foo As String
EventArgs没有太多价值,但它让CA感到高兴。