状态条进度条
Posted
技术标签:
【中文标题】状态条进度条【英文标题】:Status strip progress bar 【发布时间】:2014-04-18 10:08:09 【问题描述】:我正在做网络扫描应用程序。该应用程序运行良好,只是我想添加ProgressBar
,它显示从用户单击扫描到扫描完成的进度。
private void scanClick(object sender, System.EventArgs e)
if (StatusLabel.Text == "Ready")
StatusLabel.Text = "Please wait while processing is done...";
//scanning operation begins
//label changed when scan completed
StatusLabel.Text = "scan completed";
现在我有一个类似这样的进度条:
如何将进度条与扫描作业同步。请指教。
【问题讨论】:
您使用什么 API 进行扫描?这会通知您进度吗? 你可以使用 BackgroundWorker 来更新你的进度条。 如果您使用的核心 API 不提供进度信息,@MaxMommersteegBackGroundWorker
将毫无用处。
我没有看到 TS 谈论使用 API...
@MaxMommersteeg 那么如何在不使用 API 的情况下进行扫描?
【参考方案1】:
如果您不知道这两个 cmets 之间的进度,则无法将进度条与扫描操作同步
//scanning operation begins
//label changed when scan completed
另一种方法是显示进度条左右移动,显示扫描正在进行中,同时不知道何时完成。
使用后台线程执行扫描操作,在主线程中执行进度更新
【讨论】:
【参考方案2】:如果你在同一个线程中做一些耗时的操作,那么更新进度并调用Application.DoEvents();
。
如果你在做异步操作,那么用Control.Invoke
方法更新ProgressBar。
【讨论】:
以上是关于状态条进度条的主要内容,如果未能解决你的问题,请参考以下文章