我有一種方法返回IObservable<long>
,我從async
方法調用。我想將其轉換爲正常的List<long>
,但如果我的CancellationToken
被髮信號,那麼該操作將被取消。如何將IObservable <T>轉換爲支持CancellationToken的RX列表
我願做這樣的事情:
List<long> result = await Foo().ToList(myCancellationToken);
什麼是實現這個正確的(簡單的)的方法是什麼? IObservable<T>
的ToList()
擴展方法返回IObservable<List<T>>
,並且不帶CancellationToken
參數。
正是我害怕與其他答案。這似乎很好地訣竅。謝謝! – DeCaf
我在回答中添加了一個擴展方法''TakeWhile(CancellationToken t)'',以確保完成發生的早期而不是下一個事件。在某些情況下它可能更有用。然而,上述答案比我編輯前的最初嘗試更正確。 – bradgonesurfing
我肯定會更喜歡使用內置的Rx擴展方法(這個答案),而不是創建新的(另一個答案)。如果你正在尋找一個「更可組合的」解決方案,那麼我會傾向於'CancellationDisposable'類型和更多的內置類型。 –