【发布时间】:2010-03-25 06:50:43
【问题描述】:
我在我的应用程序中使用了进度条..我的应用程序运行正常,但进度条为空白..它不显示工作进度出了什么问题??
【问题讨论】:
标签: c# .net progress-bar
我在我的应用程序中使用了进度条..我的应用程序运行正常,但进度条为空白..它不显示工作进度出了什么问题??
【问题讨论】:
标签: c# .net progress-bar
您可能正在主 GUI 线程中执行工作。这会导致所有 GUI 事件延迟到任务完成。
改用BackgroundWorker 并使用其ProgressChanged 事件来更新进度条。
还记得在后台工作人员上将WorkerReportsProgress 设置为true。
【讨论】:
参考 StackOverflow 的这个问题:
Updating DataGrid From a BackGroundWorker
我假设您必须使用 Invoke 方法访问 UI 对象。
如果不尝试使用以下方法(在拥有控件底层窗口句柄的线程上执行指定的委托,并使用指定的参数列表。):
//In Form.Designer.cs
ProgressBar progressBar= new ProgressBar ();
//In code behind under Background worker method
ProgressVlaueSetter SetProgressValueDel = SetProgressValue;
if (progressBar.InvokeRequired)
{
progressBar.Invoke(SetProgressValueDel , 20);
}
private delegate void ProgressVlaueSetter (intvalue);
//Set method invoked by background thread
private void SetProgressValue(intvalue)
{
progressBar.Value= value;
}
【讨论】:
兼容的操作系统和环境是进度条工作的先决条件,因为在计算机显示器上绘制扩展条或块的方法并非在所有平台上都兼容。进度条类型受到保护和监管,并且可能是可许可的,但不会在国家、州、省甚至城市的任何地方运行,除非特定类型的进度指示是合法的。将代码或应用程序移动到不同的计算机类型或主机系统可能会遇到其他功能的类似问题。
【讨论】: