c# - 在非 UI 线程上运行模态对话框

标签 c# .net winforms multithreading modal-dialog

我正在编写一个简单的数据 UI,使用标准 .Net 数据绑定(bind)到 SQL Server 中的类型化数据集。

我有一个重新加载按钮,它在所有 DataAdapter 上调用 Fill 以从数据库中获取新数据(以防其他用户更改数据)。

这需要一些时间,在此期间 UI 会被卡住。它必须在 UI 线程上运行,否则数据绑定(bind)事件处理程序会抛出跨线程异常。

我想在 UI 线程连接到数据库时在后台线程上显示模式“请稍候”对话框(以便它可以动画化)。

如何在非 UI 线程上显示模态对话框?


编辑:我知道最佳做法是在后台运行操作,但由于数据绑定(bind)事件,我不能这样做。

最佳答案

你应该反其道而行之。在后台线程上运行长时间运行的进程,让 UI 线程自由响应用户操作。

如果您想在处理过程中阻止任何用户操作,您有多种选择,包括模态对话框。后台线程完成处理后,您可以将结果通知主线程

关于c# - 在非 UI 线程上运行模态对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697661/

相关文章:

c# - 如何使用 C# 将不同的应用程序发送到托盘?

c# - 简单的单线程套接字 - TCP 服务器

.net - 发布 ASP.NET 应用程序时,是否应该在 Visual Studio 配置管理器中将构建类型更改为发布?

c# - 更新 XML 文件 (C#/Linq)

C#线程使用调用,卡住表单

c# - 复制 IEnumerable<T> 的最便宜的方法?

c# - 为什么我的 Parallel.ForAll 调用最终使用单个线程?

c# - 在 C# 中避免代码重复 - 通过使用泛型?

c# - 在单击另一个控件之前,DataGridView 复选框不会更新

C#:如何在备忘录中添加一行?