在我正在处理的应用程序中,我一直在尝试将 SaveFileDialog 和 OpenFileDialog 用于它们的习惯目的(保存和打开文件。)
但是,应用程序不能支持模态表单/对话框而不崩溃,因为拥有 UI 的线程上发生了太多时间敏感的事情。
重写应用程序以将这些功能从拥有 UI 的线程中移出在短期内是不切实际的。为了完成我一直在研究的功能,我需要一个替代两个文件对话框,最好是一个可以存在于非模态表单上的控件。
有什么我可以使用的不会阻塞我拥有 UI 的线程吗?
在我正在处理的应用程序中,我一直在尝试将 SaveFileDialog 和 OpenFileDialog 用于它们的习惯目的(保存和打开文件。)
但是,应用程序不能支持模态表单/对话框而不崩溃,因为拥有 UI 的线程上发生了太多时间敏感的事情。
重写应用程序以将这些功能从拥有 UI 的线程中移出在短期内是不切实际的。为了完成我一直在研究的功能,我需要一个替代两个文件对话框,最好是一个可以存在于非模态表单上的控件。
有什么我可以使用的不会阻塞我拥有 UI 的线程吗?
拥有 UI 的线程上发生了太多对时间敏感的事情。
那是你真正的问题。.Net 具有非常强大的多线程支持。我建议你把这些东西移到别处,虽然看起来很不愉快。这可能比重新实现“打开/保存”对话框的工作量少,而且从长远来看,对于您的应用程序来说肯定会少一些。
我知道的唯一现有选项是商业产品Dialog Workshop.NET。他们有一组对话框,可以选择无模式(或直接嵌入到窗口窗体而不是单独的窗口中)。
但是,我真的会考虑尝试将您的时间敏感逻辑移动到一个单独的线程中。拥有无模式对话框可能会使用户感到困惑,因为它不会像文件对话框那样表现。拥有不可阻止的 UI 还有其他潜在后果。