共用方式為


IConnectableObservable < T > .Connect 方法

連接可觀察的 。

Namespace:System.Reactive.Subjects
裝配: System.Reactive.dll) 中的 System.Reactive (

語法

'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

傳回值

類型: System.IDisposable
用來中斷可觀察物件的 IDisposable 物件。

範例

在下列範例中,我們會使用 Publish 運算子將冷可觀察序列來源轉換成經常性存取序列來源,這會傳回我們命名為 hot的 IConnectableObservable < T >實例。 發佈操作員提供一種機制,可將單一訂閱廣播給多個訂閱者,以共用訂閱。 hot 會作為 Proxy 並訂閱來源,然後從來源接收值時,將它們推送至自己的訂閱者。 若要建立支援來源的訂用帳戶並開始接收值,我們會使用 IConnectableObservable.Connect () 方法。 由於 IConnectableObservable 繼承 IObservable,因此即使在開始執行之前,我們還是可以使用 Subscribe 來訂閱此熱順序。 請注意,在範例中,當 subscription1 訂閱時,尚未啟動熱順序。 因此,不會將任何值推送至訂閱者。 呼叫 Connect 之後,值就會推送至 subscription1。 延遲 3 秒之後,subscription2 會訂閱經常性存取,並開始立即從目前位置接收值, (3,在此情況下) 直到結束為止。 輸出如下所示:

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();

另請參閱

參考

IConnectableObservable < T > 介面

System.Reactive.Subjects 命名空間