/// <summary> /// Starts or restarts the current async search. /// </summary> public void ReStartAsync() { if (AsyncRunning) { StopAsync(); } if (!AsyncRunning) { mdDiscovery = new Discovery(DiscoveryServiceType, AddressFamily, ResolveNetworkInterfaces); mdDiscovery.DeviceAdded += new DeviceAddedEventHandler(mdDiscovery_DeviceAdded); mdDiscovery.DeviceRemoved += new DeviceRemovedEventHandler(mdDiscovery_DeviceRemoved); mdDiscovery.SearchComplete += new SearchCompleteEventHandler(mdDiscovery_SearchComplete); mdDiscovery.Start(); } }
/// <summary> /// Finds devices by device or service type synchronously using a timeout period. /// </summary> /// <param name="uriString">The URI string to search for or null / empty for all.</param> /// <param name="timeoutMS">The maximum timeout time in milliseconds to wait or -1 for wait forever.</param> /// <param name="maxDevices">The maximum number of devices to find before returning or 0 for as many as possible.</param> /// <param name="searchCompleted">True if the search completed and all available devices were returned.</param> /// <param name="addressFamily">The address family to search in. (Vista or above only).</param> /// <param name="resolveNetworkInterfaces">True to resolve network interface Guids.</param> /// <returns>A Devices list containing the found devices.</returns> public static Devices FindDevices( string uriString, int timeoutMS, int maxDevices, out bool searchCompleted, AddressFamilyFlags addressFamily = AddressFamilyFlags.IPvBoth, bool resolveNetworkInterfaces = false) { Discovery ldDiscovery = new Discovery(uriString, addressFamily, resolveNetworkInterfaces); Devices ldDevices = new Devices(); bool lbSearchCompleted = false; ManualResetEvent lmreComplete = new ManualResetEvent(false); ldDiscovery.DeviceAdded += (sender, args) => { ldDevices.Add(args.Device); if (maxDevices > 0 && ldDevices.Count >= maxDevices) { lmreComplete.Set(); } }; ldDiscovery.SearchComplete += (sender, args) => { lbSearchCompleted = true; lmreComplete.Set(); }; ldDiscovery.Start(); lmreComplete.WaitOne(timeoutMS); searchCompleted = lbSearchCompleted; ldDiscovery.Dispose(); return(ldDevices); }
/// <summary> /// Finds devices by device or service type synchronously using a timeout period. /// </summary> /// <param name="uriString">The URI string to search for or null / empty for all.</param> /// <param name="timeoutMS">The maximum timeout time in milliseconds to wait or -1 for wait forever.</param> /// <param name="maxDevices">The maximum number of devices to find before returning or 0 for as many as possible.</param> /// <param name="searchCompleted">True if the search completed and all available devices were returned.</param> /// <param name="addressFamily">The address family to search in. (Vista or above only).</param> /// <param name="resolveNetworkInterfaces">True to resolve network interface Guids.</param> /// <returns>A Devices list containing the found devices.</returns> public static Devices FindDevices( string uriString, int timeoutMS, int maxDevices, out bool searchCompleted, AddressFamilyFlags addressFamily = AddressFamilyFlags.IPvBoth, bool resolveNetworkInterfaces = false) { Discovery ldDiscovery = new Discovery(uriString, addressFamily, resolveNetworkInterfaces); Devices ldDevices = new Devices(); bool lbSearchCompleted = false; ManualResetEvent lmreComplete = new ManualResetEvent(false); ldDiscovery.DeviceAdded += (sender, args) => { ldDevices.Add(args.Device); if (maxDevices > 0 && ldDevices.Count >= maxDevices) lmreComplete.Set(); }; ldDiscovery.SearchComplete += (sender, args) => { lbSearchCompleted = true; lmreComplete.Set(); }; ldDiscovery.Start(); lmreComplete.WaitOne(timeoutMS); searchCompleted = lbSearchCompleted; ldDiscovery.Dispose(); return ldDevices; }
private void startEnum() { ManagedUPnP.Logging.LogLines += new LogLinesEventHandler(ManagedUPnPLog); ManagedUPnP.Logging.Enabled = true; mdDiscovery = new Discovery(null,AddressFamilyFlags.IPv4,true); mdDiscovery.DeviceAdded += new DeviceAddedEventHandler(mdDiscovery_DeviceAdded); mdDiscovery.SearchComplete += new SearchCompleteEventHandler(mdDiscovery_SearchComplete); mdDiscovery.Start(); }