private static void Checker_OnDiffentMaked(object sender, BitmapMarker marker) { DateTime enterTime = DateTime.Now; while (BitmapQueue.Count > 0) { if ((DateTime.Now - enterTime).TotalSeconds > 2) { //客户端下载图片超时,输出整张图片 marker.Id = BitmapQueueIndex++; marker.Bitmap.Dispose(); marker.Rect = new RECT(new System.Drawing.Rectangle(Point.Empty, ((WindowBitmap)sender).CurrentBitmap.Size)); marker.Bitmap = (Bitmap)((WindowBitmap)sender).CurrentBitmap.Clone(); lock (BitmapQueue) { for (int i = 0; i < BitmapQueue.Count; i++) { BitmapQueue[i].Bitmap.Dispose(); } BitmapQueue.Clear(); BitmapQueue.Add(marker); } SendGroupMessage("group1", Newtonsoft.Json.JsonConvert.SerializeObject(marker)); return; } System.Threading.Thread.Sleep(0); } lock (BitmapQueue) { marker.Id = BitmapQueueIndex++; BitmapQueue.Add(marker); } SendGroupMessage("group1", Newtonsoft.Json.JsonConvert.SerializeObject(marker)); }
internal static Bitmap GetBitmapById(int id) { BitmapMarker item = null; lock (BitmapQueue) { for (int i = 0; i < BitmapQueue.Count; i++) { if (BitmapQueue[i].Id == id) { item = BitmapQueue[i]; BitmapQueue.RemoveAt(i); break; } } } if (item == null) { return(null); } return(item.Bitmap); }