public void Stop() { if (null != _deviceLocator) { _deviceLocator.StopListeningForNotifications(); _deviceLocator.Dispose(); _deviceLocator = null; } }
public void Dispose() { if (!_disposed) { _disposed = true; if (_deviceLocator != null) { _deviceLocator.Dispose(); _deviceLocator = null; } } }
// The bulk of the clean-up code is implemented in Dispose(bool) protected virtual void Dispose(bool disposing) { if (isDisposed) { return; } if (disposing) { if (deviceLocator != null && !deviceLocator.IsDisposed) { deviceLocator.Dispose(); } } isDisposed = true; }
private static void ListenForBroadcasts() { if (_BroadcastListener != null) { Console.WriteLine("Closing previous listener..."); _BroadcastListener.DeviceAvailable -= _BroadcastListener_DeviceAvailable; _BroadcastListener.DeviceUnavailable -= _BroadcastListener_DeviceUnavailable; _BroadcastListener.StopListeningForNotifications(); _BroadcastListener.Dispose(); } Console.WriteLine("Starting broadcast listener"); _BroadcastListener = new SsdpDeviceLocator(); _BroadcastListener.DeviceAvailable += _BroadcastListener_DeviceAvailable; _BroadcastListener.DeviceUnavailable += _BroadcastListener_DeviceUnavailable; _BroadcastListener.StartListeningForNotifications(); Console.WriteLine("Now listening for broadcasts"); }
private void SearchForServer() { string ip4; // Have to bind to all addresses on Linux, or broadcasts don't work! if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(System.Runtime.InteropServices.OSPlatform.Windows)) { ip4 = GetLocalIp4Address(); } else { ip4 = IPAddress.Any.ToString(); } SsdpDeviceLocator deviceLocator = null; try { deviceLocator = new SsdpDeviceLocator(ip4); deviceLocator.StartListeningForNotifications(); deviceLocator.DeviceAvailable += FoundDevice; var unused = deviceLocator.SearchAsync("uuid:6111f321-2cee-455e-b203-4abfaf14b516", new TimeSpan(0, 0, 5)); deviceLocator.StartListeningForNotifications(); for (int i = 0; i < 20; i += 1) { if (!string.IsNullOrEmpty(status.Server)) { // We found a server, let the constructor continue return; } Thread.Sleep(500); } } finally { deviceLocator?.StopListeningForNotifications(); deviceLocator?.Dispose(); } throw new Exception("Could not locate server"); }