Esempio n. 1
0
 /// <summary>
 /// Add <paramref name="ep"/> to the scan list.
 /// </summary>
 public void Add(IPEndPoint ep)
 {
     lock (ScanList)
     {
         ScanList.AddLast(ep);
     }
     SemaphoreScanList.Release();
 }
Esempio n. 2
0
        /// <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
                {
                }
            }
        }