9

Task<T>.ContinueWithの基本的な概念は と同じIObservable<T>.Subscribeです。それらは、Reactive Extension が変換拡張メソッドを提供するのに十分に似ています。は BCL の一部であるためIObservable<T>、実装しない理由はありませんIObservable<T>Task<T>では、実装しない理由は何IObservable<T>ですか?

4

4 に答える 4

2

推測しかできませんが、いくつかの正当な理由があると思います。

  1. Task<T>IObservable<T>実際には同じ基本的な概念を持っていません。はい、どちらも非同期ですが、すべての共通点はほぼこれで終わりです。2 つの大きな違いは、Task<T>常に 1 つの値をIObservable<T>持ち、必要な数の値 (またはゼロを含む) を持つことができることです。

    Task<T>実装されている場合は、すべての .Net が実装さIObservable<T>れているかのようになり、単一の結果であるオブジェクト自体を返します。TIEnumerable<T>

  2. Task<T>に変換するのは簡単IObservable<T>です。RxToObservable()拡張メソッドを使用するか、自分で作成します。これにより、必要なものがはるかに少なくなります。

于 2013-04-03T23:06:01.130 に答える
2

MSFT の Stephen Toub (*) の次の言葉を引用することが適切であることを願っています。

ParallelExtensionsExtras ツアー - #2 - Task.ToObservable MSDN ブログ記事:

結局のところ、 whileは現在実装Task<TResult>していませんが、実際には実装するのに非常に適しています。オブザーバブルは、ストリームの終わりまたは例外によって終了する任意の数の値を表します。Aはこの説明に適合します。単一の値または例外で完了します。.NET Framework の将来のバージョンでimplementが見られる可能性はありますが、これを;の拡張メソッドとして実装することで、適切な動作を得ることができます。実際、Rxにはそのような拡張メソッドが含まれています。IObservable<T>Task<TResult> Task<TResult>IObservable<T>Task<TResult>ParallelExtensionsExtras

(*) "FT" が何を意味するのかはわかりませんが、MSFT は NASDAQ 株式記号で MS を意味しますが、"MSFT" の "MS" は確かに Microsoft を意味します。

于 2013-04-04T08:38:03.647 に答える