Пример #1
0
        private void TestAsynWait()
        {
            var para = new PartAsynWaitPara <int, string>();

            para.Para     = 100;
            para.Title    = "测试这个控件";
            para.Function = (inp) =>
            {
                for (int i = 0; i < inp.Para; i++)
                {
                    inp.AsynWait.Message = string.Format("正在处理:{0}项..", i);
                    Thread.Sleep(500);
                    if (inp.Token.IsCancellationRequested)
                    {
                        break;
                    }

                    //if (i > 5)
                    //{
                    //    throw new NotSupportedException("XXX");
                    //}
                }

                return("OK");
            };
            para.ShowCancel         = true;
            para.AsynWaitBackground = Brushes.Red;
            para.Completed          = (p) =>
            {
                string str;
                switch (p.Status)
                {
                case PartAsynExcuteStatus.Completed:
                    str = p.Result;
                    break;

                case PartAsynExcuteStatus.Exception:
                    str = p.Exception.Message;
                    break;

                case PartAsynExcuteStatus.Cancel:
                    str = "Cancel";
                    break;

                default:
                    str = "none";
                    break;
                }

                MessageBox.Show(str);
            };

            WPFPartAsynWaitHelper.Wait(para, this);
        }
Пример #2
0
        private void TestAsynWait(UIElement container)
        {
            var para = new PartAsynWaitPara <int, string>();

            para.Para     = 100;
            para.Title    = "测试这个控件";
            para.Function = (inp) =>
            {
                try
                {
                    for (int i = 0; i < inp.Para; i++)
                    {
                        inp.AsynWait.Message = string.Format("正在处理:{0}项..", i);
                        Thread.Sleep(2000);

                        inp.Token.ThrowIfCancellationRequested();
                        //if (inp.Token.IsCancellationRequested)
                        //{
                        //    break;
                        //}

                        //if (i > 5)
                        //{
                        //    throw new NotSupportedException("XXX");
                        //}
                    }

                    return("OK");
                }
                catch (OperationCanceledException)
                {
                    return("OperationCanceledException");
                }
            };
            para.ShowCancel           = true;
            para.ImmediatelyCompleted = false;
            //para.AsynWaitBackground = Brushes.Red;
            para.Completed = (p) =>
            {
                string str;
                switch (p.Status)
                {
                case PartAsynExcuteStatus.Completed:
                    str = p.Result;
                    break;

                case PartAsynExcuteStatus.Exception:
                    str = p.Exception.Message;
                    break;

                case PartAsynExcuteStatus.Cancel:
                    str = p.Result + "_Cancel";
                    break;

                default:
                    str = "none";
                    break;
                }

                MessageBox.Show(this, str);
            };

            //WPFPartAsynWaitHelper.Wait(para, this.grid);
            WPFPartAsynWaitHelper.Wait(para, container, true);
        }