public void TryDispose(ServiceDescription service) { if (service.IsDisposed) { return; } try { // TODO abort retry if the service has become disposed in the meantime. Helper.GetResponse(service.ScpdUrl, 3).Close(); } catch (WebException e) { if (e.Status == WebExceptionStatus.Timeout) { service.Dispose(); TryDisposeRootDevice(); } } }