我正在重写一个必须调用数据库服务器的Windows Forms app.调用可能需要长达30秒的时间,所以我想缓存结果(它不会改变).
如何,多个事件可以触发对此信息的需求,这取决于在UI中输入或 Select 了哪些其他信息.可能需要该信息的不同UI组件彼此不知道.
我只想调用那个数据库一次.所以,如果你,作为用户,触发了30秒的数据库调用(这是异步完成的),然后5秒后应用程序的另一部分发现需要该信息,我不希望应用程序发出另一个数据库请求,仅仅因为缓存仍然是空的.我希望它等待剩下的25秒,直到信息变得可用,获取缓存值,然后返回.
但我不能完全理解如何构建它,无论是数据还是代码.
我认为这个场景是两个(或更多)请求,它们以某种方式排队,一旦第一个请求被DB调用满足,第二个请求就获得现在缓存的结果值并返回.如果稍后有其他东西--第三件事--需要此信息,则请求将获取缓存值并立即返回.
我想知道在.NET中是否有这样做的内置模式或数据 struct 集.我觉得这几乎是--但不完全是--基本的async/await
模式,只是有多个东西在等待相同的结果.
这是什么模式/架构,我正在考虑,但不能完全可视化??