private void StartMonitoring(LoadBalancerItemWrapper <ThriftEndpoint> wrappedThriftEndpoint) { var endpoint = wrappedThriftEndpoint.Item.Endpoint; var thread = new Thread(() => { for (;;) { var socket = new TSocket(endpoint.Address.ToString(), endpoint.Port, PingSocketTimeout); if (socket.TryOpen()) { socket.Close(); Enable(wrappedThriftEndpoint); RemovePingingThread(wrappedThriftEndpoint.Item); return; } Thread.Sleep(PingSocketInterval * 1000); } }); RegisterPingingThread(wrappedThriftEndpoint.Item, thread); thread.Start(); }