在我正在处理的应用程序中,我一直在尝试将SaveFileDialog和OpenFileDialog用于其习惯目的(保存和打开文件)。

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

重写应用程序以将这些功能移出UI拥有的线程在短期内是不实际的。为了完成我一直在努力的功能,我需要替换两个文件对话框,最好是一个可以以非模态形式存在的控件。

我可以使用哪些东西不会阻止我的UI拥有线程?

有帮助吗?

解决方案

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

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

其他提示

  

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top