我正在编写一个 Windows Phone 7 应用程序,处理大量的图片资源 - 这些图片可以从几百个像素到 1080P(未来可能更高)。
由于图片非常消耗资源,因此我选择了在手机上缓存和调整大小,然后再显示图片。
这意味着,在用户输入图像存储的 IP 地址后,第一次设置时,我可以要求他们等待几分钟,直到所有内容都被检索/调整大小/缓存。从那时起,他们就可以拥有良好而顺畅的性能。
目前,我的缓存管理器通过 Uri 和文件位置的字典跟踪图像。我有一个队列,每次处理最多 5 张图片(异步网络请求,调整大小在线程池线程上半完成)。
我遇到的问题是 Silverlight 中的 WritableBitmap 类是一个 UI 元素,这意味着我必须通过 Dispatcher 转换到 UI 线程来进行实际的调整大小操作,这很愚蠢并且会降低整个过程的速度 - 这也意味着我的缓存管理器实际上是单线程。
所以 它的执行顺序是 缓存管理器(线程池)- >异步网络请求(线程池)- >回调(线程池)- >调整大小(UI 线程)- >标记缓存作业已完成(线程池)。
我一直在寻找第三方库,它可以 A) 编译并在 Windows Phone 7 上运行,B) 能够通过操作流或字节数组来调整各种格式的图像而不依赖于 UI 线程。
有人对此有任何经验吗?
谢谢,
Tyler