gpt4 book ai didi

c# - WinForms 中的数据绑定(bind)执行异步数据导入

转载 作者:太空狗 更新时间:2023-10-29 23:48:44 25 4
gpt4 key购买 nike

我有一个场景,我有一组对象绑定(bind)到 winforms 中的数据网格。如果用户将一个项目拖放到网格上,我需要在网格中添加一个占位符行并启动一个冗长的异步导入过程。我需要将异步导入过程的状态传回 UI,更新网格中的行并让 UI 保持响应以允许用户编辑其他行。

执行此操作的最佳做​​法是什么?

我目前的解决方案是:绑定(bind)一个 thread safe implementation of BindingList到网格,填充在网格中显示为行的对象。当用户将一个项目拖放到网格上时,我创建了一个新对象,其中包含从拖放项目中获得的稀疏信息,并将其添加到 BindingList,禁用对该行的编辑。然后我启动一个单独的线程来执行导入,将我刚刚创建的新绑定(bind)对象传递给它以填充数据。导入过程定期设置对象的状态并触发 UI 订阅的事件,告诉它刷新网格以查看对象的新属性。

我应该将绑定(bind)到网格的同一个对象传递给导入进程线程进行操作,还是应该创建一个副本并使用 BeginInvoke 将对对象的更改合并回 UI 线程?

此实现有任何问题或建议吗?

谢谢

最佳答案

好的...

我看到事件的流程是这样的:

  1. 用户将项目拖放到网格中
  2. 异步进程启动
  3. 用户界面已更新以显示“正在处理”
  4. 回调处理程序获取异步进程的响应
  5. 异步回调更新绑定(bind)源
  6. 异步回调调用网格上的“databind”来刷新 View 以包含新数据。

我会使用线程而不是后台 worker ,但我非常有信心使用线程。

后台 worker 确实简化了线程,如果您没有信心,那将是我推荐的起点。

这样您就可以同时更新源代码和用户界面,并且用户可以在处理过程中继续使用该应用程序。

关于c# - WinForms 中的数据绑定(bind)执行异步数据导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com