/// <summary> /// Add <paramref name="ep"/> to the scan list. /// </summary> public void Add(IPEndPoint ep) { lock (ScanList) { ScanList.AddLast(ep); } SemaphoreScanList.Release(); }
/// <summary> /// Scanning loop. /// </summary> protected async void Loop() { while (!IsStopped) { try { await SemaphoreScanList.WaitAsync(TokenSource.Token).ConfigureAwait(false); IPEndPoint ep; lock (ScanList) { ep = ScanList.First.Value; ScanList.RemoveFirst(); } await SemaphoreParallelism.WaitAsync(TokenSource.Token).ConfigureAwait(false); Scan(ep); } catch { } } }