我从一开始就在我的 WinForms 客户端中使用异步操作,但仅用于某些操作。当ExecuteReader
orExecuteNonQuery
完成时,回调委托触发并且一切正常。
我基本上有两个问题:
1)在现实生活系统中处理这个问题的最佳结构是什么?我看到的所有示例都是玩具示例,其中表单处理操作完成,然后在EndExecuteReader
. 当然,这意味着表单与数据库的耦合比您通常想要的更紧密。而且,当然,表单总是可以很容易地调用.Invoke
自己。我已将所有异步对象设置为从一个AsyncCtrlBlock<T>
类继承,并将表单和所有回调委托提供给我的 DAL 中异步对象的构造函数。
2)我将重新访问当前不是异步的程序的一部分。它连续进行两次调用。当第一个完成时,可以填充模型的一部分。当第二部分完成时,模型的剩余部分可以完成 - 但前提是第一部分已经完成。构建这个的最佳方法是什么?如果可以完成第一次读取并且在启动第二次读取时正在进行由于第一次读取而导致的处理,那就太好了,但是我不希望在我知道第二次读取的处理之前开始第二次读取的处理第一次读取的数据已经完成。