Observable.ToObservable<TSource> メソッド (IEnumerable<TSource>、IScheduler)
列挙可能なシーケンスを、指定したソースとスケジューラを持つ監視可能なシーケンスに変換します。
Namespace:System.Reactive.Linq
アセンブリ: System.Reactive (System.Reactive.dll)
構文
'Declaration
<ExtensionAttribute> _
Public Shared Function ToObservable(Of TSource) ( _
source As IEnumerable(Of TSource), _
scheduler As IScheduler _
) As IObservable(Of TSource)
'Usage
Dim source As IEnumerable(Of TSource)
Dim scheduler As IScheduler
Dim returnValue As IObservable(Of TSource)
returnValue = source.ToObservable(scheduler)
public static IObservable<TSource> ToObservable<TSource>(
this IEnumerable<TSource> source,
IScheduler scheduler
)
[ExtensionAttribute]
public:
generic<typename TSource>
static IObservable<TSource>^ ToObservable(
IEnumerable<TSource>^ source,
IScheduler^ scheduler
)
static member ToObservable :
source:IEnumerable<'TSource> *
scheduler:IScheduler -> IObservable<'TSource>
JScript does not support generic types and methods.
型パラメーター
- TSource
ソースの種類。
パラメーター
- source
型: System.Collections.Generic.IEnumerable<TSource>
監視可能なシーケンスに変換する列挙可能なシーケンス。
- scheduler
型: System.Reactive.Concurrency.IScheduler
入力シーケンスの列挙を実行するスケジューラ。
戻り値
種類: System.IObservable<TSource>
指定された列挙可能なシーケンスから要素がプルされる監視可能なシーケンス。
使用上の注意
Visual Basic および C# では、 IEnumerable<TSource> 型の任意のオブジェクトのインスタンス メソッドとしてこのメソッドを呼び出すことができます。 インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。 詳細については、」または」を参照してください。
解説
ToObservable 演算子は、IEnumerable インターフェイスをサポートするオブジェクトから監視可能なシーケンスを作成します。 この演算子にはスケジューラ パラメーターが用意されており、監視可能なシーケンスを作成するために必要な処理のさまざまなスケジュール オプションを許可します。 たとえば、別のスレッドで発生するために必要な列挙処理をスケジュールすることができます。
例
この例では、System.IO から返される文字列配列によって公開される IEnumerable 文字列>から、監視可能な文字列のシーケンス (IObservable<<文字列>) を作成します。 Directory.GetDirectories メソッド。 Scheduler パラメーターの ThreadPoolScheduler スケジューラは、ToObservable 演算子に渡されます。 これにより、.NET スレッド プールのスレッドで列挙が実行されます。 そのため、メイン スレッドはブロックされません。
using System;
using System.IO;
using System.Reactive.Linq;
using System.Reactive.Concurrency;
namespace Example
{
class Program
{
static void Main()
{
//*********************************************************************************************************************//
//*** Create a new observable sequence from the IEnumerable<String> exposed by the string array returned from ***//
//*** System.IO.Directory.GetDirectories(). ***//
//*** ***//
//*** In this example we use the ThreadPool scheduler to run the enumeration on a thread in the .NET thread pool. ***//
//*** This way our main thread is not blocked by the enumeration and we can process user interaction. ***//
//*********************************************************************************************************************//
var fileList = Directory.GetDirectories(@"C:\Program Files");
var seqfiles = fileList.ToObservable(Scheduler.ThreadPool);
//*********************************************************************************************************************//
//*** We subscribe to this sequence with a lambda expression as the action event handler for the OnNext action. It ***//
//*** writes each filename to the console window. A action event handler for the OnCompleted action is also ***//
//*** provided to inform the user the sequence has ended and prompt for the ENTER key. ***//
//*********************************************************************************************************************//
Console.WriteLine("\nCreating subscription. Press ENTER to exit...\n");
seqfiles.Subscribe(f => Console.WriteLine(f.ToString()));
//*********************************************************************************************************************//
//*** Since we used the ThreadPool scheduler when creating the observable sequence, the enumeration is running on a ***//
//*** thread from the .NET thread pool. So the main thread is not blocked and can terminate the example if the user ***//
//*** presses ENTER for a long running enumeration. ***//
//*********************************************************************************************************************//
Console.ReadLine();
}
}
}
コード例を使用して、次の出力が生成されました。
Creating subscription. Press ENTER to exit...
C:\Program Files\Common Files
C:\Program Files\IIS
C:\Program Files\Internet Explorer
C:\Program Files\Microsoft Games
C:\Program Files\Microsoft Help Viewer
C:\Program Files\Microsoft IntelliType Pro
C:\Program Files\Microsoft LifeCam
C:\Program Files\Microsoft Lync
C:\Program Files\Microsoft Office
C:\Program Files\Microsoft SDKs
C:\Program Files\Microsoft Security Client
C:\Program Files\Microsoft SQL Server
C:\Program Files\Microsoft SQL Server Compact Edition
C:\Program Files\Microsoft Sync Framework
C:\Program Files\Microsoft Synchronization Services
C:\Program Files\Microsoft Visual Studio 10.0
C:\Program Files\Microsoft Visual Studio 9.0
C:\Program Files\Microsoft.NET
C:\Program Files\MSBuild
C:\Program Files\Reference Assemblies
C:\Program Files\Uninstall Information
C:\Program Files\Windows Journal
C:\Program Files\Windows Live
C:\Program Files\Windows Mail
C:\Program Files\Windows Media Components
C:\Program Files\Windows Media Player
C:\Program Files\Windows NT
C:\Program Files\Windows Photo Viewer
C:\Program Files\Windows Portable Devices
C:\Program Files\Windows Sidebar
C:\Program Files\Zune