Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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();
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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();
        }
Exemple #5
0
        /// <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();
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
 /// <summary>
 /// Load 加载动画
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void MFWaiting_Load(object sender, EventArgs e)
 {
     _DrawAnimate.Play();
     NoticeThread.Set();
 }
Exemple #8
0
 /// <summary>
 /// Load
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void MFWait_Load(object sender, EventArgs e)
 {
     NoticeThread.Set();
 }
Exemple #9
0
 private void MFProgress_Load(object sender, EventArgs e)
 {
     System.Threading.Thread.Sleep(50);
     NoticeThread.Set();
 }