AsyncSubject<T> 클래스의 새 instance 초기화합니다.
네임스페이스:System.Reactive.Subjects
어셈블리: System.Reactive(System.Reactive.dll)
구문
'Declaration
Public Sub New
'Usage
Dim instance As New AsyncSubject()
public AsyncSubject()
public:
AsyncSubject()
new : unit -> AsyncSubject
public function AsyncSubject()
예제
이 예제에서는 AsyncSubject를 사용하여 Range 연산자로 생성된 정수 시퀀스를 구독합니다. AsyncSubject는 구독되는 시퀀스가 완료된 경우에만 값을 반환합니다. 시퀀스가 완료되면 AsyncSubject는 시퀀스의 최종 항목을 게시합니다. AsyncSubject는 최종 항목을 캐시합니다. 해당 AsyncSubject에 대한 모든 새 구독에는 최종 항목도 해당 구독에 게시됩니다.
using System;
using System.Reactive.Linq;
using System.Reactive.Subjects;
using System.Reactive.Concurrency;
using System.Threading;
namespace Example
{
class Program
{
static void Main()
{
//*******************************************************************************************************//
//*** A subject acts similar to a proxy in that it acts as both a subscriber and a publisher ***//
//*** It's IObserver interface can be used to subscribe to multiple streams or sequences of data. ***//
//*** The data is then published through it's IObservable interface. ***//
//*** ***//
//*** In this example an AsyncSubject is used to subscribe to an integer sequence from the Range ***//
//*** operator. An AsyncSubject only returns a value when the sequence it is subscribed to completes. ***//
//*** Once the sequence has completed, the AsyncSubject will publish the final item in the sequence. ***//
//*** The AsyncSubject caches the final item. Any new subscriptions against that AsyncSubject will ***//
//*** also have the final item published to that subscription as well. ***//
//*******************************************************************************************************//
var intSequence = Observable.Range(0, 10, Scheduler.ThreadPool);
AsyncSubject<int> myAsyncSubject = new AsyncSubject<int>();
intSequence.Subscribe(myAsyncSubject);
Thread.Sleep(1000);
myAsyncSubject.Subscribe(i => Console.WriteLine("Final integer for subscription #1 is {0}\n", i),
() => Console.WriteLine("subscription #1 completed.\n"));
Console.WriteLine("Sleeping for 5 seconds before subscription2\n");
Thread.Sleep(5000);
myAsyncSubject.Subscribe(i => Console.WriteLine("Final integer for subscription #2 after 5 seconds is {0}\n", i),
() => Console.WriteLine("subscription #2 completed.\n"));
Console.WriteLine("Press ENTER to exit...");
Console.ReadLine();
myAsyncSubject.Dispose();
}
}
}
다음 출력은 예제 코드에 의해 생성되었습니다.
Final integer for subscription #1 is 9
subscription #1 completed.
Sleeping for 5 seconds before subscription2
Final integer for subscription #2 after 5 seconds is 9
subscription #2 completed.
Press ENTER to exit...