Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WP7 vs PriorityThreadPool&网络行动_C#_Networking_Windows Phone 7_Threadpool - Fatal编程技术网

C# WP7 vs PriorityThreadPool&网络行动

C# WP7 vs PriorityThreadPool&网络行动,c#,networking,windows-phone-7,threadpool,C#,Networking,Windows Phone 7,Threadpool,我正在构建一个小的WP7应用程序,需要通过web访问/更新多个资源。我希望构建一个带有取消功能的PriorityThreadPool对象,以帮助我在后台的多个线程上运行“操作”。自定义内容优先下载用户正在看到的内容,然后下载其余内容,但如果用户更新了可视内容,则更改优先级,并使这些项目显示在池的适当列表的上方 假设我正在执行一个操作,负责从web服务器下载一个映像。您是尝试使异步调用同步还是保持原样,请考虑我可能会运行100个操作来下载100个不同的映像。也许如果我不同步调用,取消一个操作将非常

我正在构建一个小的WP7应用程序,需要通过web访问/更新多个资源。我希望构建一个带有取消功能的PriorityThreadPool对象,以帮助我在后台的多个线程上运行“操作”。自定义内容优先下载用户正在看到的内容,然后下载其余内容,但如果用户更新了可视内容,则更改优先级,并使这些项目显示在池的适当列表的上方

假设我正在执行一个操作,负责从web服务器下载一个映像。您是尝试使异步调用同步还是保持原样,请考虑我可能会运行100个操作来下载100个不同的映像。也许如果我不同步调用,取消一个操作将非常困难,因为它们在线程池中都会运行得非常快。我猜在WP7上有一些用于网络连接的线程池


任何评论或建议。

与其尝试重新创建PriorityThreadPool,不如创建一个对象来管理多个队列,您可以根据需要调整其优先级。 然后根据优先级处理每个队列。 在处理队列时,一次只发出几个请求,在一个请求完成后启动下一个请求

如果您想更好地控制取消请求的能力,可以在线程池上或通过创建BackgroundWorker来进行处理


在每个请求中,您可能希望将其作为一个同步操作进行处理,因为这会使逻辑更简单,但会使取消操作更困难。

我主要关心的不是找到高效、简单的方法来实施该策略PriorityQueue或PriorityThreadPool。但更多关于网络堆栈如何工作的信息,因为MS as决定让网络API使用一些异步约定调用,这在某种程度上有助于不冻结UI,但当需要将这些调用放入线程或线程池时,会使事情变得更复杂。能够理解网络堆栈在后台是如何工作的,也有助于定义在后台可以同时运行多少个网络操作,以及如何管理优先级在那种类型的操作上。