我在Scheduler.Default
和TaskPoolScheduler.Default
之间进行选择时遇到很大的困难。
我已经看到它建议TaskPoolScheduler更加有效/优化,并且肯定具有更明确/特定的好处;但是,鉴于它们在功能上似乎执行相同的操作,因此这并不能帮助我理解真正的差异。
Scheduler.Default
何时比TaskPoolScheduler.Default
更可取?
[Scheduler.Default
与DefaultScheduler.Instance
相同。
DefaultScheduler
如何处理重音? DefaultScheduler
位于平台抽象层之上,该层根据其所使用的系统来调度工作。
以前是System.Reactive.PlatformServices.dll
程序集,根据平台的不同而有所不同,但对于4.x,它只是一个空的外观程序集,与3.x保持兼容,并且实现已移至System.Reactive.dll
。
对于DefaultScheduler:
ThreadPool
。SchedulePeriodic
),使用System.Threading.Timer
。选择哪种平台服务的详细信息在EnlightenmentProvider中。
[Timespan很小或为零,但长时间运行的计算或周期性事件可能会使用DefaultScheduler
,尽管EventLoopScheduler
可能更好。
尽可能使用TaskPoolScheduler
。这是一种用于短计算的轻量级实现。