private void DownloadDeviceCompleted(object sender, DownloadDataCompletedEventArgs e) { object[] P = (object[])e.UserState; DeviceDescriptionEventHandler Callback = (DeviceDescriptionEventHandler)P[0]; string BaseUrl = (string)P[1]; object State = P[2]; DeviceDescriptionEventArgs e2; if (e.Error != null) e2 = new DeviceDescriptionEventArgs(e.Error, this, State); else { try { XmlDocument Xml = new XmlDocument(); Xml.Load(new MemoryStream(e.Result)); DeviceDescriptionDocument Device = new DeviceDescriptionDocument(Xml, this, BaseUrl); e2 = new DeviceDescriptionEventArgs(Device, this, State); } catch (Exception ex) { this.RaiseOnError(ex); e2 = new DeviceDescriptionEventArgs(e.Error, this, State); } finally { WebClient Client = sender as WebClient; if (Client != null) Client.Dispose(); } } try { Callback(this, e2); } catch (Exception ex) { this.RaiseOnError(ex); } }
private void DeviceRetrieved(object Sender, DeviceDescriptionEventArgs e) { try { if (e.DeviceDescriptionDocument != null) { UPnPService Service = e.DeviceDescriptionDocument.GetService("urn:schemas-upnp-org:service:WANIPConnection:1"); if (Service == null) { Service = e.DeviceDescriptionDocument.GetService("urn:schemas-upnp-org:service:WANIPConnection:2"); if (Service == null) return; } Service.StartGetService(this.ServiceRetrieved, e.State); } } catch (Exception ex) { this.exception = ex; this.State = PeerToPeerNetworkState.Error; } }