public static void InitializeTile(Tile tile) { bool loaded = false; while (!loaded && TileCache.running) { WaitingTileQueueMutex.WaitOne(); if (CountToLoad > 0) { CountToLoad--; CountToLoad = Math.Max(0, CountToLoad); // CountToLoad = 0; loaded = true; } WaitingTileQueueMutex.ReleaseMutex(); if (loaded) { if (tile != null) { tile.CreateGeometry(Earth3d.MainWindow.RenderContext11, false); tilesLoadedThisFrame++; } } else { WaitingTileQueueEvent.WaitOne(); } } }
public static void ShutdownQueue() { if (TileCache.running) { TileCache.running = false; WaitingTileQueueEvent.Set(); Thread.Sleep(2000); for (int i = 0; i < THREAD_COUNT; i++) { WaitingTileQueueEvent.Set(); queueThreads[i].Abort(); } } return; }