私はRxを初めて使用するので、ご容赦ください。
Task<T>
を でラップしたいIObservable<T>
。ここまでは順調ですね:
Task<T> task = Task.Factory.StartNew(...);
IObservable<T> obs = task.ToObservable();
今、私が欲しいのは、オブザーバーが購読を解除したときにタスクをキャンセルするように通知することです:
var cancel = new CancellationToken();
Task<T> task = Task.Factory.StartNew(..., cancel);
IObservable<T> obs = task.ToObservable(); //there should be a way to tie the cancel token
//to the IObservable (?)
IDisposable disposable = obs.Subscribe(...);
Thread.Sleep(1000);
disposable.Dispose(); // this should signal the task to cancel
それ、どうやったら出来るの?
FWIW この接線を生成したシナリオは次のとおりです: Rx とタスク - 新しいタスクが生成されたときに実行中のタスクをキャンセルしますか?