我有一个多步骤的BackgroundWorker流程。我使用选取框进度条,因为其中一些步骤在iSeries服务器上运行,因此没有任何好方法可以确定百分比。我想象的是每个步骤后都有更新的标签。您如何建议更新winform上的标签以反映每个步骤?
想想我会多补充一点。我通过iSeries(或IBM i或AS / 400或运行OS / 400的中型计算机... er ... i5 / OS)上的存储过程调用一些CL和RPG程序(该死的IBM因为没有保留相同的名称)年初至年))。
无论如何,我必须等到这一步完全完成才能继续进行winform。我正在考虑向用户发送反馈,给出主要步骤。
我可能应该在开始时给出这个。对于那个很抱歉。我尽量保持我的问题足够让别人利用以后而不是我的具体任务。
答案 0 :(得分:1)
这本质上是背景工作者的观点之一。使用ProgressBar
并根据您的算法确定进度有多远。
(如前所述,如果他们是10%,请发送10
,如果他们是50%,请发送50
)
使用BackgroundWorker
bgWrk
添加以下事件:
bgWrk.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(bgWrk_ProgressChanged);
// Note: This method is invoked on the UI thread
void bgWrk_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
// Add progress to whatever UI element needs updating. The below simply uses a progress bar.
prog.Value = e.ProgressPercentage;
}
在您认为值得用户更新的每个主要步骤之后,请执行以下操作:
bgWrk.ReportProgress(intValue);
几点说明:
您也可以在Object
方法中传递ReportProgress()
,这样您就可以使用字符串对象等更新标签,但进度条仍然是通用符号“坚持,我正在做点什么”
如果您有任何不确定的轮询,并且您使用的是ProgressBar
,请尝试将其用作Indeterminate ProgressBar或微调器等。 WPF有一个内置属性,可以使进度条不确定,这很有用。
答案 1 :(得分:0)
有多少步骤?如果有10个步骤,只需在成功完成的每个步骤结束时使用10%步进标记。