我知道这个问题之前已经在这里问过了,但是我已经阅读了几个答案,没有帮助到我。
我有一个ComboBox需要从数据库中获取与所选内容相关的一些信息(可能在失去焦点时,以防止在滚动期间进行数千次调用)。这些信息仅用于显示,不是关键性的,因此在后台线程/任务中获取听起来是完美的解决方案。然而,这确实需要几秒钟的时间,因为它正在从一些非常大的表格中获取计数。用户应该可以自由地转移到其他任务,因为这些信息只是用于显示/参考。 这个问题 倡导使用Background worker,但是这个解决方案有两个问题。1)当worker已经运行时更改选择会引入问题。您可以不启动第二次,这意味着当它返回时,它不再显示新选择的有效信息,或者尝试取消它(这并不总是有效)。2)由于某种无法解释的原因,实际访问后台工作者数据库的方法如果在Model中比在ViewModel中慢返回得更慢,我认为它不属于ViewModel。我真的不知道为什么。
我有一个ComboBox需要从数据库中获取与所选内容相关的一些信息(可能在失去焦点时,以防止在滚动期间进行数千次调用)。这些信息仅用于显示,不是关键性的,因此在后台线程/任务中获取听起来是完美的解决方案。然而,这确实需要几秒钟的时间,因为它正在从一些非常大的表格中获取计数。用户应该可以自由地转移到其他任务,因为这些信息只是用于显示/参考。 这个问题 倡导使用Background worker,但是这个解决方案有两个问题。1)当worker已经运行时更改选择会引入问题。您可以不启动第二次,这意味着当它返回时,它不再显示新选择的有效信息,或者尝试取消它(这并不总是有效)。2)由于某种无法解释的原因,实际访问后台工作者数据库的方法如果在Model中比在ViewModel中慢返回得更慢,我认为它不属于ViewModel。我真的不知道为什么。
这个问题有几个投票,但OP的问题措辞非常糟糕,而且所选答案只是说“是的,应该可以工作”。
这个问题的方法看起来很有前途,但链接的视频长达一小时(我看了整个视频),并且仅在10-15秒钟内涉及调度程序而没有解释。如果有人有一个更深入地介绍这种方法的文章链接,那就好了。
线程池,如此处建议,看起来可能是最好的选择,因为多个查找请求只会排队,而不会导致已经运行的错误。然而,它没有解释如何使用线程池,而是链接到MSDN文章。如果有人有一个更深入地介绍这种方法的文章链接,那就理想了,因为它似乎是更好的解决方案(当然,我可能是错的)。
我真的尽力研究了这个问题,但大多数答案只是告诉你要使用哪种方法,而不是如何使用它。我真的在寻找一个“如何做”的答案。