/// <summary> /// 等待函数执行完成 /// </summary> /// <param name="handle"></param> /// <param name="methods"></param> public void DoWait(IWin32Window handle, Action[] methods) { prgMain.Maximum = methods.Length; ((Action)(() => { NoticeThread.WaitOne();//等待句柄 int num = 1; foreach (var method in methods) { //TODO:1.验证是否取消 //TODO:2.验证是否抛出异常 if (_RunAsync) { Invoke((Action)(() => { var _Msg = method.MethodDescription(); lblMsg.Text = num + "/" + methods.Length + ",正在执行 " + _Msg + " 操作..."; prgMain.Value = num; })); method?.Invoke(); num++; } } })).BeginInvoke(new AsyncCallback(OnAsync), null); ShowDialog(handle); }
/// <summary> /// /// </summary> /// <param name="param"></param> public void DoWait(int param) { int count = param; prgMain.Maximum = count; ((Action) delegate() { NoticeThread.WaitOne(); for (int i = 1; i < count + 1; ++i) //耗时操作 { if (_RunAsync) { this.Invoke((Action) delegate() { if (!IsDisposed) { prgMain.Value = i; lblMsg.Text = "正在克隆第 \"" + (i + 1) + "\" 个[周泽生]"; } }); System.Threading.Thread.Sleep(50); } else { break; } } }).BeginInvoke(new AsyncCallback(OnAsync), null); ShowDialog(); }
/// <summary> /// 等待函数执行完成 /// </summary> /// <param name="handle"></param> /// <param name="title"></param> /// <param name="method"></param> public void DoWait(IWin32Window handle, string title, Action method) { ((Action)(() => { NoticeThread.WaitOne(); method?.Invoke(); })).BeginInvoke(new AsyncCallback(OnAsync), null); ShowDialog(handle); }
/// <summary> /// 等待函数执行完成 /// </summary> /// <param name="handle"></param> /// <param name="title"></param> /// <param name="methods"></param> public void DoWait(IWin32Window handle, string title, Action[] methods) { ((Action)(() => { NoticeThread.WaitOne(); foreach (var method in methods) { if (_RunAsync) { method.Invoke(); } } })).BeginInvoke(new AsyncCallback(OnAsync), null); ShowDialog(); }
/// <summary> /// 等待函数执行完成 /// </summary> /// <param name="handle"></param> /// <param name="title"></param> /// <param name="tuples"></param> public void DoWait(IWin32Window handle, string title, List <Tuple <string, Action> > tuples) { ((Action)(() => { NoticeThread.WaitOne(); var _Count = tuples.Count; foreach (var item in tuples) { if (_RunAsync) { item.Item2?.Invoke(); } } })).BeginInvoke(new AsyncCallback(OnAsync), null); ShowDialog(); }
/// <summary> /// 用户控制的进度 /// </summary> /// <param name="handle"></param> /// <param name="frameProgress"></param> public void DoWait(IWin32Window handle, IProgressFrame frameProgress) { if (frameProgress == null) { return; } (new Action(() => { NoticeThread.WaitOne(); if (IsDisposed) { return; } Invoke((Action) delegate() { frameProgress.LoadProgressHandle(this); }); })).BeginInvoke(new AsyncCallback(OnAsync), null); ShowDialog(handle); }
/// <summary> /// Load 加载动画 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MFWaiting_Load(object sender, EventArgs e) { _DrawAnimate.Play(); NoticeThread.Set(); }
/// <summary> /// Load /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MFWait_Load(object sender, EventArgs e) { NoticeThread.Set(); }
private void MFProgress_Load(object sender, EventArgs e) { System.Threading.Thread.Sleep(50); NoticeThread.Set(); }