我有一个小应用程序来转换几种文件格式,主窗口形式包含几个文本框,按钮等。我有另一个“文档”类,它处理所有实际的转换工作,我的表单基本上迭代通过所有文件,并调用适当的Document方法来转换文件。然而,当这种情况发生时,表单会停止响应。我创建了另一个简单的表单,其中包含一个进度条和一个取消按钮,当转换开始向我们(容易被叮叮当当)的用户提供一些反馈时产生。但是,当新表单加载时,所有控件都是白框,并且它也停止响应。转换完成后,进度条会正常关闭,主窗体会再次响应。
是否有一种简单的方法可以使这两种形式独立,这样即使另一种形式没有反应,进度条也可以运作?
答案 0 :(得分:7)
最简单的解决方案是使用BackgroundWorker组件在后台线程上完成处理。您可以从VS工具箱中将其拖入。它允许您使用进度通知更新UI线程,以便您可以更新进度条以显示实际值(比使用“选取框”样式进度条更加用户友好)。
答案 1 :(得分:0)
您应该使用两个线程,以便在您工作时表单继续响应。
这是非常常见的,.NET有一个BackgroundWorker控件,可以为你包装一些。
答案 2 :(得分:0)
偶尔调用Application.DoEvent(),可能在你的循环中。 不像BackgroundWorker那样正确,但它更简单。
答案 3 :(得分:0)
最简单的解决方案是使用BackgroundWorker组件在后台线程上完成处理。您可以从VS工具箱中将其拖入。它允许您使用进度通知更新UI线程,以便您可以更新进度条以显示实际值(比使用“选取框”样式进度条更加用户友好)。