十分鐘了解VB.NET遠程事件
學習VB.NET時,你可能會遇到VB.NET遠程事件問題,這里將介紹VB.NET遠程事件問題的解決方法,在這里拿出來和大家分享一下。在不同工程之間完成觸發事件的工作,這在VB中是不能做到的。但是在VB.NET中我們可以使用Event和RaiseEvent關鍵字并且使用Delegate關鍵字來實現它。如果你想從VB.NET工程中觸發一個事件并且在另外一個工程中收到這個觸發,我們就必須使用事件和Delegate的概念。
執行VB.NET遠程事件源
#t#當我們仍要使用RaiseEvent語句來觸發事件的時候,如果要在其它VB.NET工程中的代碼接收代碼我們需要采用不同的方法來聲明事件。特殊地,我們需要在類外部我們要觸發事件的地方通過使用Delegate語句定義事件作為delegate。接著創建一個新的類庫,將它命名為EventSource并且增加一個簡單類命名為RemoteClass。
假定我們想觸發一個事件,這個事件返回一個字符串參數。我們首先要利用參數的類型來聲明一個Delegate:
- Public Delegate Sub RemoteEventHandler(ByVal SomeString As String)
通常情況下VB.NET會自動創建這個Delegate。然而,有時候這個Delegate不能從其它工程中進行訪問,所以我們還是對它進行顯式的聲明。
以下是我們創建的類,它可以觸發事件:
- Public Class RemoteClass
- Public Event RemoteEvent As RemoteEventHandler
- Public Sub DoSomething()
- RaiseEvent RemoteEvent(anyevent)
- End Sub
- End Class
這段功能是否成功的實現取決于事件本身的定義:
- Public Event RemoteEvent As RemoteEventHandler
這個事件并沒有顯式地定義它的參數,而是依賴于Delegate來定義。反而,這個事件是定義為一個特殊的類型,即我們剛才定義Delegate的類型。
另外,用于觸發事件的代碼只是應用了一個簡單的RaiseEvent語句:
- RaiseEvent RemoteEvent(anyevent)
這條語句提供的參數數值用于當事件被觸發時的返回值。