【问题标题】:Windows Forms: Progress Bar UnresponsiveWindows 窗体:进度条无响应
【发布时间】:2008-12-22 21:35:14
【问题描述】:

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

有没有一种简单的方法可以让这两个表单独立,让进度条在另一个表单无响应的情况下也能运行?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      这很常见,以至于 .NET 有一个 BackgroundWorker 控件,可以为您包装其中的一些内容。

      【讨论】:

        【解决方案3】:

        只是偶尔调用 Application.DoEvent(),可能在你的循环中。 不如BackgroundWorker,但更简单。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多