#星空云诊所#:云诊所-如何巧妙利用好进度条

在星空标准产品中,很多大批量计算,都少不了进度条,但虽然有些进度条不是真实进度,但大家要清楚,即使不是真实进度条,如果没有进度条,不仅仅是客户体验不好,不知道这个在执行过程这么久是否死机了,是否还在执行,其实最重要的一点是客户端与服务端长时间不交互,服务端会认为客户端没响应,会自动终止进程,会造成应用程序不执行,报异常错误,发现有很多二开程序发现超过5分钟,没有进度条就会执行自然中断,报执行异常。所以对于大批量计算等执行过程,必须加上进度条,并且能做到准确进度条是最好的,这样用户就会清晰的知道已经执行到哪里了,那下面就跟大家分享一下真实进度条如何去实现,希望开发人员能在批量处理环节,能利用好进度条,尽量编写一些真实进度条,能让使用体验有大幅度提升。
一、进度条的原理介绍:
利用异步执行,服务端更新SESSION执行情况,在客户端进行定期更新执行状态,就体现为进度条的执行完成比例。
二、进度条的具体写法:
(1)使用系统本身定义好的进度条控件,不用自己再加进度条控件,并让进度的初始值为0,如下:
//processForm.
// 增加批量生成进度条
var processForm = this.View.ShowProcessForm(new Action<FormResult>(t => { }), true, "正在批量导入MES发货单,请稍候...");
this.View.Session["ProcessRateValue"] = 0;
(2) 异步执行需要批量处理的方法,这里以写的导入方法作为实例,具体如下:
Kingdee.BOS.KDThread.MainWorker.QuequeTask(
() =>
{
try
{
// TODO: 异步处理
ImportData();
}
catch (Exception ex)
{
this.View.ShowErrMessage(ex.StackTrace, Kingdee.BOS.Resource.ResManager.LoadKDString("引入过程遇到未知错误:", "002013030003985", Kingdee.BOS.Resource.SubSystemType.BOS) + ex.Message);
}
finally
{
var processView = this.View.GetView(processForm.PageId);
this._importing = false;
this.View.StyleManager.SetEnabled("F_PEIZ_IMPORT", "uploadLock", true);
processView.Close();
}
},
(asynResult) =>
{
if (a
#星空云诊所#:云诊所-如何巧妙利用好进度条
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



