На этой странице в MSDN указано, что
Если вы не используете перегрузку, которая принимает планировщик в качестве аргумента, Rx выберет планировщик по умолчанию, используя принцип наименьшего параллелизма. Это означает, что выбирается планировщик, обеспечивающий наименьшее количество параллелизма, который удовлетворяет потребности оператора. Например, для операторов, возвращающих наблюдаемое с конечным и небольшим количеством сообщений, Rx вызывает Immediate. Для операторов, возвращающих потенциально большое или бесконечное количество сообщений, вызывается CurrentThread. Для операторов, использующих таймеры, используется ThreadPool.
Я хотел бы иметь справочный лист, для которого наблюдаемые операторы используют планировщик по умолчанию, но я нигде не могу его найти. Каковы планировщики по умолчанию для каждого наблюдаемого оператора?
Ответ 1 · рейтинг 71 · JerKimball
Ого, найти было не просто...
Глубоко в недрах пространства имен System.Reactive.Concurrency есть внутренний статический класс с именем SchedulerDefaults, который объявлен как:
internal static class SchedulerDefaults
{
internal static IScheduler AsyncConversions
{ get { return DefaultScheduler.Instance; }}
internal static IScheduler ConstantTimeOperations
{ get { return ImmediateScheduler.Instance; }}
internal static IScheduler Iteration
{ get { return CurrentThreadScheduler.Instance; }}
internal static IScheduler TailRecursion
{ get { return ImmediateScheduler.Instance; }}
internal static IScheduler TimeBasedOperations
{ get { return DefaultScheduler.Instance; }}
}
AsyncConversions используется:
Start, ToAsync, FromAsyncPattern
ConstantTimeOperations используется:
Empty, GetSchedulerForCurrentContext, Return, StartWith, Throw
Iteration используется:
Generate, Range, Repeat, TakeLast, ToObservable, and the ReplaySubject<T>
TailRecursion используется:
Run
TimeBasedOperations используется:
Buffer, Delay, DelaySubscription, Generate, Interval, Sample, Skip, SkipLast
SkipUntil, Take, TakeLast, TakeLastBuffer, TakeUntil, Throttle, TimeInterval,
Timeout, Timer, Timestamp, Window