BrutileArcGIS.Lib.MultipleThreadResetEvent.WaitAll C# (CSharp) Method

WaitAll() public method

等待所以线程执行完毕
public WaitAll ( ) : void
return void
        public void WaitAll()
        {
            _done.WaitOne();
        }

Usage Example

示例#1
0
        private void DownloadTiles(object args)
        {
            var downloadFinished = args as ManualResetEvent;

            // Loop through the tiles, and filter tiles that are already on disk.
            var downloadTiles = new List <TileInfo>();

            for (var i = 0; i < _tiles.ToList().Count; i++)
            {
                if (!_fileCache.Exists(_tiles[i].Index))
                {
                    downloadTiles.Add(_tiles[i]);
                }
                else
                {
                    // Read tiles from disk
                    var name = _fileCache.GetFileName(_tiles[i].Index);

                    // Determine age of tile...
                    var fi = new FileInfo(name);
                    if ((DateTime.Now - fi.LastWriteTime).Days <= _tileTimeOut)
                    {
                        continue;
                    }
                    File.Delete(name);
                    downloadTiles.Add(_tiles[i]);
                }
            }

            Logger.Debug("Number of download tiles:" + downloadTiles.Count);

            if (downloadTiles.Count > 0)
            {
                // 2. Download tiles...
                //var doneEvents = new ManualResetEvent[downloadTiles.Count];
                var doneEvents = new MultipleThreadResetEvent(downloadTiles.Count);

                foreach (var t in downloadTiles)
                {
                    object o = new object[] { t, doneEvents };
                    ThreadPool.SetMaxThreads(25, 25);
                    ThreadPool.QueueUserWorkItem(DownloadTile, o);
                }

                doneEvents.WaitAll();
                Logger.Debug("End waiting for remote tiles...");
            }
            if (downloadFinished != null)
            {
                downloadFinished.Set();
            }
        }
All Usage Examples Of BrutileArcGIS.Lib.MultipleThreadResetEvent::WaitAll