C# 在.net中替换OpenFileDialog/SaveFileDialog

C# 在.net中替换OpenFileDialog/SaveFileDialog,c#,.net,openfiledialog,savefiledialog,C#,.net,Openfiledialog,Savefiledialog,在我正在开发的应用程序中,我一直在尝试将SaveFileDialog和OpenFileDialog用于它们的常规用途(保存和打开文件) 但是,应用程序无法支持模式表单/对话框而不会崩溃,因为在拥有UI的线程上发生了太多时间敏感的事情 重写应用程序以将这些功能从拥有UI的线程中移出,在短期内是不实际的。为了完成我一直在开发的功能,我需要一个替代品来代替两个文件对话框,最好是一个可以在非模态窗体上运行的控件 有什么东西我可以使用,不会阻止我的UI拥有线程 在拥有UI的线程上发生了太多对时间敏感的事情

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

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

重写应用程序以将这些功能从拥有UI的线程中移出,在短期内是不实际的。为了完成我一直在开发的功能,我需要一个替代品来代替两个文件对话框,最好是一个可以在非模态窗体上运行的控件

有什么东西我可以使用,不会阻止我的UI拥有线程

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


那才是你真正的问题。Net具有非常强大的多线程支持。我建议你把这些东西搬到别的地方去,虽然看起来不太舒服。这可能比重新实现打开/保存对话框的工作量要少,而且从长远来看,对您的应用程序来说肯定会少。

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


然而,我真的想尝试将时间敏感的逻辑转移到一个单独的线程中。拥有无模式对话框可能会让用户感到困惑,因为它不会像文件对话框那样工作。拥有一个不可阻止的UI还有其他潜在后果。

正如我在原始问题中所写的那样,重写应用程序以将这些功能从拥有UI的线程中移除在短期内是不现实的。显然,我们希望在某个时候做到这一点,但这是一项艰巨的任务,需要重新安排一个运行速度大约为500 Kloc的应用程序。正如我在最初的问题(并在上面重复)中所写的那样,重写应用程序以将这些功能从拥有UI的线程中移开在短期内是不现实的。显然,我们希望在某个时候做到这一点,但这是一项艰巨的任务,需要重新安排一个运行速度大约为500 klocs的应用程序。@Jekke:有一个选项不需要这样做——我只是说,我相信这样做是值得的,而且应该考虑,尽管听起来你已经这样做了。不过,Dialog Workshop.NET将为您提供廉价的无模式对话框窗口。