다음을 통해 공유


IConnectableObservable<T>. Connect 메서드

관찰 가능한 을 연결합니다.

네임스페이스:System.Reactive.Subjects
어셈블리: System.Reactive(System.Reactive.dll)

구문

'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

Return Value

형식: System.IDisposable
관찰 가능 개체의 연결을 끊는 데 사용되는 IDisposable 개체입니다.

예제

다음 예제에서는 Publish 연산자를 사용하여 콜드 관찰 가능한 시퀀스 원본을 핫으로 변환합니다. 이 연산자는 IConnectableObservable<T> instance 반환합니다. Publish 연산자는 단일 구독을 여러 구독자에게 브로드캐스트하여 구독을 공유하는 메커니즘을 제공합니다. hot는 프록시 역할을 하고 원본을 구독한 다음, 원본에서 값을 수신하여 자체 구독자에게 푸시합니다. 지원 원본에 대한 구독을 설정하고 값을 받기 시작하려면 IConnectableObservable.Connect() 메서드를 사용합니다. IConnectableObservable은 IObservable을 상속하므로 실행을 시작하기 전에 구독을 사용하여 이 핫 시퀀스를 구독할 수 있습니다. 이 예제에서는 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 네임스페이스