二开使用异步进度条处理复杂耗时业务

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开使用异步进度条处理复杂耗时业务

一些复杂耗时的业务处理,如果耗时超过一定时长,则会抛出链接超时异常。在这种情形下,可以使用异步+进度条的方式去处理。

比如在列表插件中,点击一个按钮,按钮里面去处理耗时业务,代码示例如下:

public override void BarItemClick(BOS.Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            switch (e.BarItemKey.ToUpper())
            {
                case "TBEXPORT":
                    {
                        Exprot();
                        break;
                    }
            }

        }

        private void Exprot()
        {
            DataTable dt = GetExportData();
            DynamicFormShowParameter progressFormParameter = this.View.ShowProcessForm(
            new Action<FormResult>((fr) => { }), true, Kingdee.BOS.Resource.ResManager.LoadKDString("正在处理任务中...", "002406030033118", Kingdee.BOS.Resource.SubSystemType.BOS));
            Kingdee.BOS.KDThread.MainWorker.QuequeTask(this.View.Context, () =>
            {
                try
                {
                    int count = dt.Rows.Count;
                    var rate = count / 100;
                    for (int i = 0; i < count; i++)
                    {
                        ExportData(dt.Rows[i]);
                        //设置进度条的进度值
                        this.View.Session["ProcessRateValue"] = rate * (i + 1);
                    }
                }
                catch (Exception ex)
                {
                    this.View.ShowErrMessage(ex.Message);
                }
                finally
                {
                    this.View.Session["ProcessRateValue"] = 100;
                    this.View.SendDynamicFormAction(this.View);
                }
            },
            new Action<Kingdee.BOS.KDThread.AsynResult>((ar) =>
            {
                if (ar.Success == false && ar.Exception != null)
                {
                    return;
                }
            })
            );
        }

在代码里面每设置一次进度条的进度值,前端就会跟服务端交互一次(把进度条的进度显示出来),这样就能保证不超时了。

二开使用异步进度条处理复杂耗时业务

一些复杂耗时的业务处理,如果耗时超过一定时长,则会抛出链接超时异常。在这种情形下,可以使用异步+进度条的方式去处理。比如在列表插件...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息