2011-04-06 77 views
4

我有一項服務返回Subject<T>,消費者正在訂閱它。 我將如何取消現有訂閱並處理它?RX主題<T>如何取消訂閱

+0

您的代碼是訂閱者還是您想取消訂閱其他人的訂閱? – 2011-04-06 17:20:22

回答

11

當您在Subject<T>上致電Subscribe()時,它會返回IDisposable。只需在返回的句柄上調用Dispose(),它就會取消訂閱。

+0

感謝里德。用戶輸入 - >做異步搜索 - >當AsyncSearch正在進行,如果用戶再次搜索 - >處置並重新創建主題 – Andy 2011-04-06 17:23:12

+0

@安迪:'主題',在它自己的,不是一次性的。 (當然,具體的可能是)。處理訂閱通常很重要,因爲這就是你如何停止聆聽 - 但是如果它在設計中非常分離,GC可能會爲你處理它... – 2011-04-06 17:29:13

+2

@Andy,如果你試圖在用戶搜索時中止搜索再次,不要處置它,考慮使用TakeUntil。您可能希望通過Hands on Labs來獲取關於在他們的字典建議樣本中使用服務的建議。 – 2011-04-07 00:29:37