Condividi tramite


IConnectableObservable<T>. Connect, metodo

Connette l'osservabile.

Namespace:System.Reactive.Subjects
Assemblea: System.Reactive (in System.Reactive.dll)

Sintassi

'Declaration
Function Connect As IDisposable
'Usage
Dim instance As IConnectableObservable
Dim returnValue As IDisposable

returnValue = instance.Connect()
IDisposable Connect()
IDisposable^ Connect()
abstract Connect : unit -> IDisposable 
function Connect() : IDisposable

Valore restituito

Tipo: System.IDisposable
Oggetto IDisposable usato per disconnettere l'osservabile.

Esempio

Nell'esempio seguente viene convertita un'origine sequenza osservabile a freddo in una sequenza ad accesso frequente usando l'operatore Publish, che restituisce un'istanza T IConnectableObservable<denominata> hot. L'operatore Publish fornisce un meccanismo per condividere le sottoscrizioni trasmettendo una singola sottoscrizione a più sottoscrittori. hot funge da proxy e sottoscrive l'origine, quindi riceve i valori dall'origine, li inserisce nei propri sottoscrittori. Per stabilire una sottoscrizione all'origine di backup e iniziare a ricevere i valori, viene usato il metodo IConnectableObservable.Connect(). Poiché IConnectableObservable eredita IObservable, è possibile usare Subscribe per sottoscrivere questa sequenza ad accesso frequente anche prima dell'avvio dell'esecuzione. Si noti che nell'esempio la sequenza ad accesso frequente non è stata avviata quando subscription1 lo sottoscrive. Di conseguenza, non viene eseguito il push di alcun valore nel sottoscrittore. Dopo aver chiamato Connect, i valori vengono quindi inseriti in subscription1. Dopo un ritardo di 3 secondi, subscription2 sottoscrive l'accesso frequente e inizia a ricevere i valori immediatamente dalla posizione corrente (3 in questo caso) fino alla fine. L'output sarà simile al seguente:

Current Time: 6/1/2011 3:38:49 PM

Current Time after 1st subscription: 6/1/2011 3:38:49 PM

Current Time after Connect: 6/1/2011 3:38:52 PM

Observer 1: OnNext: 0

Observer 1: OnNext: 1

Current Time just before 2nd subscription: 6/1/2011 3:38:55 PM 

Observer 1: OnNext: 2

Observer 1: OnNext: 3

Observer 2: OnNext: 3

Observer 1: OnNext: 4

Observer 2: OnNext: 4
       
Console.WriteLine("Current Time: " + DateTime.Now);
var source = Observable.Interval(TimeSpan.FromSeconds(1));   //creates a sequence

IConnectableObservable<long> hot = Observable.Publish<long>(source);  // convert the sequence into a hot sequence

IDisposable subscription1 = hot.Subscribe(     // no value is pushed to 1st subscription at this point
                            x => Console.WriteLine("Observer 1: OnNext: {0}", x),
                            ex => Console.WriteLine("Observer 1: OnError: {0}", ex.Message),
                            () => Console.WriteLine("Observer 1: OnCompleted"));
Console.WriteLine("Current Time after 1st subscription: " + DateTime.Now);
Thread.Sleep(3000);  //idle for 3 seconds
hot.Connect();       // hot is connected to source and starts pushing value to subscribers 
Console.WriteLine("Current Time after Connect: " + DateTime.Now);
Thread.Sleep(3000);  //idle for 3 seconds
Console.WriteLine("Current Time just before 2nd subscription: " + DateTime.Now);
IDisposable subscription2 = hot.Subscribe(     // value will immediately be pushed to 2nd subscription
                            x => Console.WriteLine("Observer 2: OnNext: {0}", x),
                            ex => Console.WriteLine("Observer 2: OnError: {0}", ex.Message),
                            () => Console.WriteLine("Observer 2: OnCompleted"));
Console.ReadKey();

Vedere anche

Riferimento

Interfaccia T> IConnectableObservable<

Spazio dei nomi System.Reactive.Subjects