2009-02-23 23 views
3

我有一堂課正在趕上System.Diagnostics.DataReceivedEventArgs活動。我可以在.NET中重定向事件嗎?

我想讓這個事件可以在外部使用。爲了實現這個目標,我在內部捕捉這個事件,並提出另一個事件,這對我來說似乎有點重複。

這是什麼最好的方法?我可以連線這些事件嗎,所以我不需要舉辦新的活動?

下面是代碼:

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 

回答

8

你所說的 「惡補」 的事件呢?有一兩件事你可以做的是暴露自己的情況下,這只是傳遞訂閱/取消訂閱到另一個:

public event DataReceivedEventHandler DataReceived 
{ 
    add 
    { 
     realEventSource.DataReceived += value; 
    } 
    remove 
    { 
     realEventSource.DataReceived -= value; 
    } 
} 

,詳細瞭解事件,閱讀my article on the topic - 讓我知道如果有什麼不清楚。

編輯:下面是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 
+0

已更新,我現在使用的代碼的問題,我希望,更有意義了。 – 2009-02-23 22:51:55

相關問題