我知道这个问题已经在这里问过,但我已经阅读了几个答案,但没有帮助我。WPF,MVVM和异步工作
我有一个组合框需要获取一些与数据库选择相关的信息(可能是失去焦点,在滚动期间停止一千个调用)。这些信息仅用于显示,并不重要,因此获得后台线程/任务听起来就像是完美的解决方案。尽管它需要几秒钟,因为它从一些非常大的表格中获得。用户应该可以自由地进行其他任务,因为这些信息实际上仅用于显示/参考。
This question拥护者使用后台工作者,但这种解决方案有两个问题。 1)在工作人员已经运行的时候改变选择会带来问题。你可以不是第二次启动它,也就是说当它返回时它不再显示新选择的有效信息,或者尝试取消它(这并不总是有效)。 2)出于某种原因,我无法解释,实际访问后台工作数据库的方法返回速度较慢,如果方法在模型中比在ViewModel,我不认为它属于。我真的不知道为什么。
This question有几张选票,但是OP的问题措辞很差,选定的答案只是说“是的,应该有效”。
This question's method看起来很有前景,但链接的视频只有一个小时(我看了整件事情),并且仅在10秒内触发调度器而未解释它。如果有人链接到一篇更深入地介绍这种方法的文章,那很好。
线程池,因为suggested here看起来可能是最好的方式,因为多个查询请求只是排队,而不会导致已经运行的错误。但是,它没有解释如何使用线程池,而是链接到MSDN文章。如果有人链接到一篇更深入地介绍这种方法的文章,那将是理想的,因为它似乎是更好的解决方案(当然,我可能是错的)。
我真的试图对这一个做我的研究,但大多数这些答案只是告诉你使用什么方法,而不是如何使用它。我真的在寻找一个“如何做”。
你想要异步做什么? 1)加载并填充组合框项目? 2)当用户选择一个项目时做一些其他的动作?您应该从问题中移除其他所有内容,以清楚说明您的实际问题。 –
我认为这很清楚。我不需要填充组合框,我需要从数据库中获取与所做选择相关的信息,并在UI上显示这些信息。我的问题是,几个解决方案被提倡作为答案在stackoverflow没有解释。如果我删除问题的这一部分,恐怕我会得到那些答案的链接,或者类似的简单回答。 – Tyrsius