【发布时间】:2014-05-06 22:45:52
【问题描述】:
我见过的所有示例都显示了 BackgroundWorker 中的“长循环”。虽然我知道这是正确的方法,但我的问题是代码最初不是这样编写的,将它放入 BackgroundWorker 会很复杂。有什么方法可以在状态栏或无模式弹出窗口中创建进度条,而无需更改文件加载代码?谢谢。
【问题讨论】:
-
代码目前不在任何线程中吗?无论哪种方式,您都可以“创建进度条”.. 但如果它当前不在线程中,您的文件加载代码无疑会阻塞 UI 线程.. 因此,对进度条的任何更新都将不可见。
-
在 WPF/Silverlight/Metro 中,您可以使用数据绑定。如果文件正在后台线程上加载,并且您有一个包含已加载文件百分比的公共属性,那么您可以将此属性绑定到进度条的值,并且将在更新属性时更新.一个更简单的解决方案,但可能不是那么好:您还可以在文件加载时将进度条设置为不确定状态(它显示它正在加载文件,但不显示已完成/剩余多少)。
-
不,如果不在与 UI 线程不同的线程上运行加载代码,您将无法执行此操作。 BackgroundWorker 本身不是必需的,但需要不同的线程。