/// <summary> /// 终止显示提示窗体 /// </summary> public int Stop() { Monitor.Enter(Lock); do { if (_State == EnumBusyTipOperatorState.Released) { break; } if (ShowCount <= 0) { break; } if (--ShowCount > 0) { break; } _State = EnumBusyTipOperatorState.Free; FrmTip.Invoke(new DelegateInvoke(FrmTip.Close)); FrmOpCompletedEvent.WaitOne(); } while (false); Monitor.Exit(Lock); return(1); }
/// <summary> /// 释放非托管资源 /// </summary> public void Dispose() { Disposed = true; if (this.State == EnumBusyTipOperatorState.Show) { Stop(); } _State = EnumBusyTipOperatorState.Released; StopTipThread = true; ShowTipEvent.Set(); TipThread.Join(); }
/// <summary> /// 开始显示提示窗体 /// </summary> public int Start() { Monitor.Enter(Lock); ++ShowCount; if (this.State == EnumBusyTipOperatorState.Free) { _State = EnumBusyTipOperatorState.Show; //通过ShowTipEvent事件向TipThread发送信息,使其显示提示窗体 ShowTipEvent.Set(); //等待提示窗体显示完成的信号 & 也可以通过以下方式实现:使当前线程挂起,然后在FrmTip_Load中恢复 FrmOpCompletedEvent.WaitOne(); } Monitor.Exit(Lock); return(1); }