我想通過遵循一個WCF應用程序(來自Sacha Barber)的示例來學習一些WCF原則。VB.NET中事件的GetInvocationList
現在,我想下面的函數轉換成VB.NET
private void BroadcastMessage(ChatEventArgs e)
{
ChatEventHandler temp = ChatEvent;
if (temp != null)
{
foreach (ChatEventHandler handler in temp.GetInvocationList())
{
handler.BeginInvoke(this, e, new AsyncCallback(EndAsync), null);
}
}
}
,但我有一些問題,因爲下面的代碼不會被編譯器所接受
Private Sub BroadcastMessage(ByVal e As ChatEventArgs)
Dim handlers As EventHandler(Of ChatEventArgs) = ChatEvent
If handlers IsNot Nothing Then
For Each handler As EventHandler(Of ChatEventArgs) In handlers.GetInvocationList()
handler.BeginInvoke(Me, e, New AsyncCallback(AddressOf EndAsync), Nothing)
Next
End If
End Sub
它說
公共共享事件ChatEvent(發件人 作爲Object,e As ChatEventArgs)'是 事件,並不能直接
稱爲來到點,是那麼VB.NET可能獲得與某一事件在一些其他的方式處理?
請記住,您在課堂上使用的是未經證實的成員,並且(除非我錯了),此命名策略在將來的編譯器版本中不保證保持不變。 – 2010-02-01 13:58:09
@亞當 - 是的,沒有記錄,據我所知,但我看不到他們改變它,除非他們有理由或至少提供替代方案。無論如何,這是您目前唯一可以做到的方式,而無需像您自己的例子那樣自行處理所有事件。如果他們改變它,你的工作仍然會繼續,但我寧願保存那些可能會改變的工作。 – 2010-02-01 19:25:45