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