我有一个场景,如果可能的话,我试图通过在用户实际需要结果之前预获取结果的一些子元素来将其变成响应速度更快的 UI。我不清楚如何最好地处理线程,所以我希望有人可以提供一些建议。
Scenario
有一个搜索表单(.NET 富客户端)使用户能够为给定客户选择帐户。用户搜索给定文本以查找客户集合,然后将其显示在结果网格中。然后,当用户选择客户时,系统会搜索该客户的帐户列表并将其显示在第二个网格中以供用户选择,以构成要打开的最终上下文(即帐户)。
现有系统
我让这一切以请求/响应的方式运行,使用常规后台线程来分别解析客户和客户的帐户,直接响应用户的选择。 UI 被锁定/禁用(但响应),直到找到帐户。
Goal
我想要实现的是在用户选择前 N 个客户之前开始获取他们的帐户...其中 N 是网格中显示的项目数。
当用户滚动网格时,新显示的项目将被添加到要获取的“队列”中。
问题
- 线程池是管理线程的适当机制吗?如果是这样,您可以强制只让一个排队的工作项目优先级上升吗? - 例如如果用户在开始/完成提取之前选择该客户。
- 如果没有,我还应该做什么?
- 无论哪种方式,您是否知道任何展示此功能的优秀博客文章和/或开源项目?
是的,线程池是一个不错的选择,可能位于Backgroundworker 或.NET4 的TaskParallel 库后面。
但是你不能(不应该)“碰撞”ThreadPool 线程,但我认为这无论如何都不会有用。
您可能应该做的是使用线程安全队列(前 N 个项目)并使用 2 个以上线程来处理队列。当选择一个项目但尚未处理时,您可以将其向上移动或立即启动一个单独的线程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)