Aracılığıyla paylaş


IConnectableObservable<T>. Connect Yöntemi

Gözlemlenebilir öğesini bağlar.

Ad Alanı:System.Reactive.Subjects
Derleme: System.Reactive (System.Reactive.dll içinde)

Syntax

'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

Dönüş Değeri

Tür: System.IDisposable
Gözlemlenebilir bağlantısını kesmek için kullanılan IDisposable nesnesi.

Örnekler

Aşağıdaki örnekte, sık erişimli olarak adlandırdığımız IConnectableObservable T> örneğini döndüren Publish işlecini kullanarak soğuk gözlemlenebilir< bir sıra kaynağını sık erişimliye dönüştürüyoruz. Publish işleci, birden çok aboneye tek bir abonelik yayınlayarak abonelikleri paylaşma mekanizması sağlar. hot bir ara sunucu olarak görev yapar ve kaynağa abone olur, ardından kaynaktan değer aldığında bunları kendi abonelerine iletir. Yedekleme kaynağına abonelik oluşturmak ve değerleri almaya başlamak için IConnectableObservable.Connect() yöntemini kullanırız. IConnectableObservable, IObservable'ı devraldığından, çalışmaya başlamadan önce bile bu sık erişimli diziye abone olmak için Subscribe özelliğini kullanabiliriz. Örnekte, subscription1 abone olduğunda etkin sıranın başlatılmadığını unutmayın. Bu nedenle aboneye hiçbir değer gönderilmez. Connect çağrıldıktan sonra değerler subscription1 aboneliğine gönderiliyor. 3 saniyelik bir gecikmeden sonra subscription2 sık erişimliye abone olur ve değerleri geçerli konumdan (bu örnekte 3) sonuna kadar hemen almaya başlar. Çıktı şuna benzer:

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

Ayrıca Bkz.

Başvuru

IConnectableObservable<T> Arabirimi

System.Reactive.Subjects Ad Alanı