public void Open() { try { OpenServiceHost(); } catch(Exception) { var client = new ChannelFactory<IInvalidateCacheService>(new NetNamedPipeBinding(), new EndpointAddress(invalidateCacheUri)).CreateChannel(); client.Stop(); var expirationTime = DateTime.Now.AddSeconds(5); var connected = false; while(DateTime.Now < expirationTime && connected == false) { try { OpenServiceHost(); connected = true; } catch { connected = false; } } } }