/// <summary> /// /// </summary> /// <param name="Notice"></param> /// <param name="Title"></param> public static void ShowWaiting(string Notice, string Title) { SeampLock.WaitOne(); TopWaiting hTopWaiting = new TopWaiting(Notice, Title); LstHTopWaiting.Add(hTopWaiting); CLDC_CTNProtocol.ThreadPool.QueueUserWorkItem(new WaitCallback(thShowWaiting), hTopWaiting); while (!hTopWaiting.IsHandleCreated && !hTopWaiting.IsDisposed) { Thread.Sleep(1); } SeampLock.Release(); }
private static void thShowWaiting(object hObj) { TopWaiting hTopWaiting = (TopWaiting)hObj; CLDC_Comm.Win32Api.POINT CurPos = new Win32Api.POINT(); if (CLDC_Comm.Win32Api.GetCursorPos(out CurPos)) { //计算当前正在第几个屏幕 System.Windows.Forms.Screen[] ArScreen = System.Windows.Forms.Screen.AllScreens; int index = Screen.GetScreenIndex(CurPos.X, CurPos.Y); //设置坐标 Point PosLoc = new Point((ArScreen[index].WorkingArea.Width - hTopWaiting.Width) / 2, (ArScreen[index].WorkingArea.Height - hTopWaiting.Height) / 2); PosLoc.X += ArScreen[index].WorkingArea.Left; PosLoc.Y += ArScreen[index].WorkingArea.Top; hTopWaiting.Location = PosLoc; } hTopWaiting.ShowDialog(); }
/// <summary> /// 隐藏等待框 /// </summary> /// <returns></returns> public static void HideWaiting() { SeampLock.WaitOne(); for (int i = 0; i < LstHTopWaiting.Count; i++) { try { TopWaiting hTopWaiting = LstHTopWaiting[i]; try { hTopWaiting.Invoke(new MethodInvoker(hTopWaiting.Close)); } catch { } } catch { } } LstHTopWaiting.Clear(); SeampLock.Release(); }