public ActiveHealthCheckMonitor( IOptions <ActiveHealthCheckMonitorOptions> monitorOptions, IEnumerable <IActiveHealthCheckPolicy> policies, IProbingRequestFactory probingRequestFactory, ITimerFactory timerFactory, ILogger <ActiveHealthCheckMonitor> logger) { _monitorOptions = monitorOptions?.Value ?? throw new ArgumentNullException(nameof(monitorOptions)); _policies = policies?.ToDictionaryByUniqueId(p => p.Name) ?? throw new ArgumentNullException(nameof(policies)); _probingRequestFactory = probingRequestFactory ?? throw new ArgumentNullException(nameof(probingRequestFactory)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _scheduler = new EntityActionScheduler <ClusterInfo>(cluster => ProbeCluster(cluster), autoStart: false, runOnce: false, timerFactory); }