private void CreateTileLoadWorker() { _canvas.OnEnvelopeChanged += _canvasEnvelopeChanged; _asyncRefreshCanvas = new AsyncRefreshCanvasHandler(TryRefreshCanvas); _loadWorker = new BackgroundWorker(); _loadWorker.DoWork += new DoWorkEventHandler(_loadWorker_DoWork); _loadWorker.WorkerSupportsCancellation = true; _loadWorker.WorkerReportsProgress = true; _loadWorker.ProgressChanged += new ProgressChangedEventHandler(_loadWorker_ProgressChanged); }
public void Dispose() { _disposed = true; //clear load queue for thread exit _loadStack.Clear(); while (!_loadWorkerIsCompleted && _loadWorkerIsStarted) { Thread.Sleep(10); } _loadWorker.Dispose(); // if (_loadWorker != null) { _loadWorker.Dispose(); _loadWorker = null; } if (_tilesLocator != null) { _tilesLocator.Dispose(); _tilesLocator = null; } if (_tileCacheManager != null) { _tileCacheManager.Dispose(); _tileCacheManager = null; } if (_sleepTileCacheManager != null) { _sleepTileCacheManager.Dispose(); _sleepTileCacheManager = null; } if (_dataProviderReader != null) { _dataProviderReader.Dispose(); _dataProviderReader = null; } _dataProvider = null; _asyncRefreshCanvas = null; _canvas.OnEnvelopeChanged -= _canvasEnvelopeChanged; _canvas = null; }