1

プロセスの実行終了を管理するイベントを作成しました

' <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

このイベントは、プロセスが終了したときに発生し、情報メッセージまたはエラー メッセージを含むメッセージを送信します。

プロセスが終了すると、メッセージを 1 つだけ返します。たとえば、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)

カスタム「e」メンバーを作成する方法をMSDNで検索しましたが、何も見つからないため、これを開始する方法がわかりません。

4

2 に答える 2

1

次のように、独自のイベント引数クラスを簡単に作成できます。

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 は満足しています。

于 2013-10-11T19:32:03.847 に答える