Bạn giữ IDisposable
đã được trả về bởi Subscribe
, và gọi Dispose
trên đó.
Cũng có thể là cách tích hợp Rx IDisposable
dựa trên đăng ký hủy đăng ký với CancellationToken
ra khỏi hộp, nhưng chỉ cần gọi Dispose
sẽ là khởi đầu. (Bạn có thể luôn luôn chỉ cần đăng ký một sự tiếp nối với các dấu hiệu hủy để gọi vứt bỏ ...)
Dưới đây là một ví dụ ngắn nhưng đầy đủ để chứng minh:
using System;
using System.Reactive.Concurrency;
using System.Reactive.Linq;
using System.Threading;
class Program
{
static void Main(string[] args)
{
var instance = ThreadPoolScheduler.Instance;
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var disposable = Observable
.Interval(TimeSpan.FromSeconds(0.5), instance)
.Subscribe(_ => Console.WriteLine(DateTime.UtcNow));
cts.Token.Register(() => disposable.Dispose());
Thread.Sleep(10000);
}
}
Nguồn
2016-02-12 11:24:07
Đẹp, chưa từng thấy điều đó. (Cả hai công việc, tất nhiên ... Tôi nghi ngờ rằng quá tải theo dõi chỉ cần gọi đăng ký trong cùng một cách :) –
@ JonSkeet Có, tất cả các phương pháp mở rộng CancellationToken làm là đăng ký Vứt bỏ như bạn đã làm. –