处理 ComboBox 的 BindingSource 非常慢......

Disposing the BindingSource of a ComboBox is extremely slow...

我有一个带有 4 个查找 table 的主 table。所有 table 都绑定到通过存储过程访问的 SQL table。每个查找 table 有 3 到 27 行。主要 table 有大约 22,000 行(宠物食品和产品)。

我的 DataGridView 显示主 table 的行,查找列配置为组合框。我可以插入、删除、编辑主 table,...所有这些功能都可以正常工作。表单的初始加载和插入新行各需要大约一秒钟,但这无关紧要。所有其他操作都相对较快。

Here is a screen shot of the DataGridView:

问题出现在我关闭表单时...并且仅在将一行或多行插入主 table 之后。关闭表格最多可能需要一分钟。在关闭表格时,我现在自己处理 5 table 的绑定源,以便我可以为它们计时。处理 4 次查找 table 的绑定源通常每 table 需要 10-15 秒。关闭主要 table 的绑定源根本不需要时间。同样,这只会在将新行插入主 table 后发生。我可以编辑主 table 行、更改查找列值和删除行,并且在这些用例中关闭表单是即时的。

我试过 运行 VS 内的程序,VS 外 运行 调试 EXE,以及 运行 VS 外 运行 EXE 的发布版本, 结果都相似。

我能做些什么来防止处理 ComboBox 绑定源的这种长时间延迟?这是典型的吗?我应该考虑其他选择吗?

在尝试了各种不成功的解决方案后,我用头撞墙三天后,我从头开始重新构建了应用程序。这解决了问题,我相信我找到了原因。起初我只是创建了包含所有 table 适配器的数据集,这非常快,然后我添加了一个表单和网格来模拟我在上面描述的情况。测试确认没有任何问题,所以我继续添加更多具有相同 ComboBox 查找的表单,并且它继续正常工作。我很确定我之前的数据集定义中有一些奇怪的东西。希望这对将来的人有帮助。