Windows窗体:进度条无响应

时间:2008-12-22 21:35:14

标签: c# winforms

我有一个小应用程序来转换几种文件格式,主窗口形式包含几个文本框,按钮等。我有另一个“文档”类,它处理所有实际的转换工作,我的表单基本上迭代通过所有文件,并调用适当的Document方法来转换文件。然而,当这种情况发生时,表单会停止响应。我创建了另一个简单的表单,其中包含一个进度条和一个取消按钮,当转换开始向我们(容易被叮叮当当)的用户提供一些反馈时产生。但是,当新表单加载时,所有控件都是白框,并且它也停止响应。转换完成后,进度条会正常关闭,主窗体会再次响应。

是否有一种简单的方法可以使这两种形式独立,这样即使另一种形式没有反应,进度条也可以运作?

4 个答案:

答案 0 :(得分:7)

最简单的解决方案是使用BackgroundWorker组件在后台线程上完成处理。您可以从VS工具箱中将其拖入。它允许您使用进度通知更新UI线程,以便您可以更新进度条以显示实际值(比使用“选取框”样式进度条更加用户友好)。

答案 1 :(得分:0)

您应该使用两个线程,以便在您工作时表单继续响应。

这是非常常见的,.NET有一个BackgroundWorker控件,可以为你包装一些。

答案 2 :(得分:0)

偶尔调用Application.DoEvent(),可能在你的循环中。 不像BackgroundWorker那样正确,但它更简单。

答案 3 :(得分:0)

最简单的解决方案是使用BackgroundWorker组件在后台线程上完成处理。您可以从VS工具箱中将其拖入。它允许您使用进度通知更新UI线程,以便您可以更新进度条以显示实际值(比使用“选取框”样式进度条更加用户友好)。