如何创建具有"e"变量成员的事件?



我创建了一个事件来管理进程的执行端

' <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感到高兴。

相关内容

  • 没有找到相关文章

最新更新