c# - que - qué es un desarrollador net
¿Cuáles son los programadores predeterminados para cada operador observable? (1)
Esta página en MSDN establece que
Si no usa la sobrecarga que toma un programador como argumento, Rx seleccionará un planificador predeterminado utilizando el principio de menor concurrencia. Esto significa que se elige el planificador que introduce la menor cantidad de concurrencia que satisfaga las necesidades del operador. Por ejemplo, para los operadores que devuelven un observable con un número finito y pequeño de mensajes, Rx llama Inmediato. Para los operadores que devuelven una cantidad potencialmente grande o infinita de mensajes, se llama a CurrentThread. Para los operadores que usan temporizadores, se usa ThreadPool.
Me gustaría tener una hoja de referencia para la cual los operadores observables usen el Programador predeterminado, pero no puedo encontrar uno en ninguna parte. ¿Cuáles son los programadores predeterminados para cada operador observable?
Wow, eso no fue trivial de encontrar ...
En las profundidades del System.Reactive.Concurrency
nombres System.Reactive.Concurrency
, hay una clase interna estática llamada SchedulerDefaults
, que se declara como:
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
es utilizado por:
Start, ToAsync, FromAsyncPattern
ConstantTimeOperations
es utilizado por:
Empty, GetSchedulerForCurrentContext, Return, StartWith, Throw
Iteration
es utilizada por:
Generate, Range, Repeat, TakeLast, ToObservable, and the ReplaySubject<T>
TailRecursion
es utilizado por:
Run
TimeBasedOperations
es utilizado por:
Buffer, Delay, DelaySubscription, Generate, Interval, Sample, Skip, SkipLast
SkipUntil, Take, TakeLast, TakeLastBuffer, TakeUntil, Throttle, TimeInterval,
Timeout, Timer, Timestamp, Window