我可以在.NET中重定向事件吗?

dr.*_*vil 3 .net events

我有一个正在抓住这个System.Diagnostics.DataReceivedEventArgs活动的课程.

我想让这个活动在外部可用.为了实现这一目标,我现在正在内部抓住这个并引发另一个事件,这对我来说似乎有些重复.

最好的方法是什么?我可以连接这些事件,所以我不需要举办新活动吗?

这是代码:

Class MyClass  

Public Event OutputDataReceived(sender As Object, e As System.Diagnostics.DataReceivedEventArgs)

Public Sub Action()
    ....
     AddHandler Process.OutputDataReceived, AddressOf ReadData
    ....
End Sub

  Private Sub ReadData(ByVal sender As Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
        RaiseEvent Me.OutputDataReceived(sender, e)
    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

"抓住"这个活动是什么意思?你可以做的一件事是公开你自己的事件,它只是将订阅/取消订阅传递给另一个:

public event DataReceivedEventHandler DataReceived
{
    add
    {
        realEventSource.DataReceived += value;
    }
    remove
    {
        realEventSource.DataReceived -= value;
    }
}
Run Code Online (Sandbox Code Playgroud)

有关事件的更多详细信息,请阅读我关于该主题的文章 - 如果有任何不清楚的地方,请告诉我.

编辑:这是VB.NET中的等价物:

Public Custom Event DataReceived As DataReceivedEventHandler
    AddHandler(ByVal value As DataReceivedEventHandler)
        AddHandler Me.realEventSource.DataReceived, value
    End AddHandler
    RemoveHandler(ByVal value As DataReceivedEventHandler)
        RemoveHandler Me.realEventSource.DataReceived, value
    End RemoveHandler
    RaiseEvent(ByVal sender as Object, ByVal args as DataReceivedEventArgs)
        Throw New NotSupportedException
    End RaiseEvent
End Event
Run Code Online (Sandbox Code Playgroud)