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