Observable.ToObservable<TSource-Methode> (IEnumerable<TSource>, IScheduler)
Konvertiert eine aufzählbare Sequenz in eine beobachtbare Sequenz mit einer angegebenen Quelle und einem angegebenen Planer.
Namespace:System.Reactive.Linq
Versammlung: System.Reaktiv (in System.Reactive.dll)
Syntax
'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.
Typparameter
- TSource
Der Quellentyp.
Parameter
- source
Typ: System.Collections.Generic.IEnumerable<TSource>
Die aufzählbare Sequenz, die in eine beobachtbare Sequenz konvertiert werden soll.
- scheduler
Typ: System.Reactive.Concurrency.IScheduler
Der Planer, auf dem die Enumeration der Eingabesequenz ausgeführt werden soll.
Rückgabewert
Typ: System.IObservable<TSource>
Die beobachtbare Sequenz, deren Elemente aus der angegebenen aufzählbaren Sequenz abgerufen werden.
Hinweis zur Verwendung
In Visual Basic und C# können Sie diese Methode als instance-Methode für jedes Objekt vom Typ IEnumerable<TSource> aufrufen. Bei Verwendung der Syntax für Instanzenmethoden lassen Sie den ersten Parameter aus. Weitere Informationen finden Sie unter oder .
Bemerkungen
Der ToObservable-Operator erstellt eine beobachtbare Sequenz aus einem Objekt, das die IEnumerable-Schnittstelle unterstützt. Mit diesem Operator wird ein Planerparameter bereitgestellt, um verschiedene Planungsoptionen für die Verarbeitung zuzulassen, die zum Erstellen der beobachtbaren Sequenz erforderlich ist. Sie können beispielsweise die Enumerationsverarbeitung planen, die für einen anderen Thread erforderlich ist.
Beispiele
In diesem Beispiel wird eine beobachtbare Sequenz von Zeichenfolgen (IObservable-Zeichenfolge<>) aus der IEnumerable-Zeichenfolge<> erstellt, die durch das vom System.IO zurückgegebene Zeichenfolgenarray verfügbar gemacht wird. Directory.GetDirectories-Methode. Der ThreadPoolScheduler-Planer wird für den Scheduler-Parameter an den ToObservable-Operator übergeben. Dadurch wird die Enumeration für einen Thread aus dem .NET-Threadpool ausgeführt. Daher wird der Standard Thread nicht blockiert.
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();
}
}
}
Die folgende Ausgabe wurde mithilfe des Beispielcodes generiert.
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