【问题标题】:Replacing OpenFileDialog / SaveFileDialog in .net在 .net 中替换 OpenFileDialog / SaveFileDialog
【发布时间】:2009-05-05 15:51:59
【问题描述】:

在我正在开发的应用程序中,我一直在尝试将 SaveFileDialog 和 OpenFileDialog 用于它们的习惯用途(保存和打开文件)。

但是,应用程序无法支持模态表单/对话框而不崩溃,因为拥有 UI 的线程上发生了太多时间敏感的事情。

重写应用程序以将这些功能从拥有 UI 的线程中移出在短期内是不切实际的。为了完成我一直在研究的功能,我需要一个替代两个文件对话框,最好是一个可以存在于非模态表单上的控件。

有什么我可以使用的不会阻塞我拥有 UI 的线程吗?

【问题讨论】:

    标签: c# .net openfiledialog savefiledialog


    【解决方案1】:

    拥有 UI 的线程上发生了太多对时间敏感的事情。

    这是你真正的问题。 .Net 具有非常强大的多线程支持。我建议你把这些东西移到别处,虽然看起来很不愉快。这可能比重新实现“打开/保存”对话框的工作量少,而且从长远来看,对您的应用来说肯定会少一些。

    【讨论】:

    • 正如我在原始问题中所写,重写应用程序以将这些功能从拥有 UI 的线程中移出在短期内是不切实际的。显然,我们希望在某个时候这样做,但这是一项艰巨的任务,涉及重新安排运行到大约 500 klocs 的应用程序的内部结构。
    【解决方案2】:

    我知道的唯一现有选项是Dialog Workshop.NET,一种商业产品。它们有一组对话框,可以选择无模式(或直接嵌入到窗口窗体而不是单独的窗口)。

    但是,我真的会考虑尝试将您的时间敏感逻辑移动到单独的线程中。拥有无模式对话框可能会使用户感到困惑,因为它不会像文件对话框那样表现。使用不可屏蔽的 UI 还有其他潜在后果。

    【讨论】:

    • 正如我在原始问题中所写(并在上面重复),重写应用程序以将这些功能从 UI 拥有的线程中移出在短期内是不切实际的。显然,我们希望在某个时候这样做,但这是一项艰巨的任务,涉及重新安排运行到大约 500 klocs 的应用程序的内部结构。
    • @Jekke:有一个选项不需要这样做 - 我只是说我确实相信这样做是值得的,并且应该考虑,尽管听起来你有。不过,Dialog Workshop.NET 将在短期内为您提供廉价的无模式对话窗口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 2021-05-05
    相关资源
    最近更新 更多