//从内存加载图片 public void addGDIlayer(string layername, IImageDataProvider datapro, config cfg) { //delete existing same layer ILayer layer = this.mapBox.Map.GetLayerByName(layername); if (layer != null) { if (mp != null) { mp.Dispose(); mp = null; } if (img != null) { img.Dispose(); img = null; } if (p != null) { DeleteObject(p); } this.mapBox.Map.Layers.Remove(layer); ((Layer)layer).Dispose(); GC.Collect(); } //get data from data provider if (datapro == null) { DefaultData dd = new DefaultData(); mp = dd.GetData(); } else { mp = datapro.GetData(); } p = mp.GetHbitmap(); img = Image.FromHbitmap(p); ImageGDILayer gdilayer = new ImageGDILayer(layername, img, cfg); this.mapBox.Map.Layers.Insert(0, gdilayer); this.mapBox.Map.ZoomToBox(gdilayer.Envelope); this.mapBox.Refresh(); //System.Diagnostics.Process.GetCurrentProcess().MinWorkingSet = new System.IntPtr(5); }