// return true if the uri is different public bool StartPing() { lastPingTime = DateTime.Now; bool isNewUri = false; try { OperationalUIFacade facade = (OperationalUIFacade)OperationalInterface.ObjectDirectory.Resolve(name); string newUri = RemotingServices.GetObjectUri(facade); if (newUri != uri) { isNewUri = true; uri = newUri; if (responseStatus != ResponseStatus.Unknown) { responseStatus = ResponseStatus.Unknown; parent.OnPingCompleted(this); } } pingInvoker = facade.Ping; ThreadPool.QueueUserWorkItem(DoPing, pingInvoker); } catch (Exception) { if (responseStatus != ResponseStatus.Down) { responseStatus = ResponseStatus.Down; parent.OnPingCompleted(this); } } return(isNewUri); }