2013-04-23 89 views
1

我是一個C#新手試圖在我的Xamarin IOS應用程序中實現SignalR。C# - SignalR我如何刪除我的事件處理程序

我的代碼非常簡單:

_connection = new Microsoft.AspNet.SignalR.Client.Hubs.HubConnection (Common.signalRAddress); 

feedHub = _connection.CreateHubProxy ("feedHub"); 

_connection.Received += data => { OnReceiveData (data); }; 

_connection.Start(); 

我的問題是我如何刪除我的委託? 寫足夠了嗎?

_connection.Received -= data => { OnReceiveData (data); }; 

任何幫助將非常感激。

+0

是的。這就是你如何刪除委託人! – Dave 2013-04-23 14:54:49

+1

[在C#中取消訂閱匿名方法]的可能重複(http://stackoverflow.com/questions/183367/unsubscribe-anonymous-method-in-c-sharp) – poupou 2013-04-23 15:06:25

回答

3

我可能是錯的,但如果你這樣做,它不會實際取消訂閱該事件。

它沒有在我寫的一個小測試應用程序。

相反創建函數如

void Connection_Recieved(string obj) 
{ 
} 

和做connection.Recieved + = Connection_Recieved; 和connection.Recieved - = Connection_Recieved;

我不認爲匿名事件功能是去這裏:)

我假設的方式,看着你的代碼示例,你可以只是做,

connection.Recieved += OnReceiveData; 
    connection.Recieved -= OnReceiveData; 
7

您使用的是集線器,爲什麼不使用內置的on/off方法調用?

又名:

var doSomething = feeHub.On<int>("doSomething", val => { 
    // Do something with int val 
}); 

然後將其刪除,你可以這樣做:

doSomething.Dispose(); 

如果你真的要聽流經樞紐然後使用接收的所有數據是正確的做法,並@Dracanus的答案將起作用。

相關問題