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); }
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); }