public static ServerManager Start(ServerChecker serverChecker, IEnumerable<string> connectionStrings, IEnumerable<string> failoverConnectionStrings, int checkInterval = 1000) { var sm = new ServerManager(serverChecker, connectionStrings, failoverConnectionStrings); var checkerTimer = new Timer(checkInterval); sm.serverChecker.DoCheckupOnAllServers( sm.activeServers.Union(sm.failoverServers)); checkerTimer.Elapsed += (o, e) => { checkerTimer.Enabled = false; try { sm.serverChecker.DoCheckupOnAllServers( sm.activeServers.Union(sm.failoverServers)); } finally { checkerTimer.Enabled = true; } }; checkerTimer.Start(); checkerTimers.Add(sm, checkerTimer); return sm; }
public static void Stop(ServerManager serverManager) { if (checkerTimers.ContainsKey(serverManager)) checkerTimers[serverManager].Stop(); }