Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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下载和解析多个XML文件_C#_Php_Multithreading_Windows Phone 7_Webclient - Fatal编程技术网

C# 使用WP7下载和解析多个XML文件

C# 使用WP7下载和解析多个XML文件,c#,php,multithreading,windows-phone-7,webclient,C#,Php,Multithreading,Windows Phone 7,Webclient,我遇到了一个令人困惑的问题,我不确定问题是我不知道WebClient OpenReadCompletedEvent委托,还是我选择的用于服务器端脚本的解决方案存在问题,应用程序与之交互 这是我的问题: 我有一个定义视频游戏标题的类,我使用一个WebClient异步打开一个RSS提要进行阅读,完成后,它将继续使用相同的方法获取用户提交的关于该标题的信息。为此,我循环浏览从RSS提要GameStop.com的RSS提要解析出来的每一个视频游戏标题,这就是我遇到问题的地方,我没有办法让所有这些Open

我遇到了一个令人困惑的问题,我不确定问题是我不知道WebClient OpenReadCompletedEvent委托,还是我选择的用于服务器端脚本的解决方案存在问题,应用程序与之交互

这是我的问题:

我有一个定义视频游戏标题的类,我使用一个WebClient异步打开一个RSS提要进行阅读,完成后,它将继续使用相同的方法获取用户提交的关于该标题的信息。为此,我循环浏览从RSS提要GameStop.com的RSS提要解析出来的每一个视频游戏标题,这就是我遇到问题的地方,我没有办法让所有这些OpenReadCompletedEvent代理保持同步,或者我没有意识到

现在我的代码变得令人尴尬和复杂,我认为这是错误的: 注:游戏是游戏对象的列表

List<Thread> threads = new List<Thread>();
            for(int i = 0; i < games.Count; i++)
            {
                threads.Add(new Thread(downloadHype));
                threads[i].Start(i);
            }

public void downloadHype(object data)
        {
            int index = (int)data;
            String tempUrl = String.Format("http://slyduck.com/hypemachine/frontend.php?intent=2&guid={0}", games[index].GuidString);

            WebClient client = new WebClient();
            client.OpenReadAsync(new Uri(tempUrl));
            client.OpenReadCompleted += new OpenReadCompletedEventHandler(
                delegate(object sender, OpenReadCompletedEventArgs e)
                {
                    if (e.Error == null)
                    {
                        XDocument xdoc = XDocument.Load(e.Result);
                        games[index].Hype = (from item in xdoc.Descendants("hype")
                                     select new Hype()
                                     {
                                         Id = uint.Parse(item.Element("id").Value),
                                         GameId = uint.Parse(item.Element("game_id").Value),
                                         UserId = uint.Parse(item.Element("user_id").Value),
                                         Score = (uint.Parse(item.Element("score").Value) == 1)
                                     }).ToList();
                    }
                });
}
有没有更简单的方法让我来组织?我考虑过将游戏guid数组作为GET或POST参数发送的可能性,以减轻创建这么多webclient所产生的一些垃圾,但我不确定这是否是正确的解决方案

我已经研究了同步类和并行类,但是它们在SilverLight的.NET实现中不可用


任何帮助都将不胜感激。谢谢

生成的线程太多。记住,一个新线程会直接消耗1MB的虚拟地址空间

如果您有一个用户有一个ID-GUID,那么按照您知道的GUID获取数据,但是您的XML应该是一个炒作列表,而不仅仅是一个


换句话说,使用不同的XML结构。然后,您只需要一个后台线程和一个WebClient就可以获取整个列表。

好吧,上面使用的脚本只需获取由游戏guid选择的任何特定游戏的所有宣传分数。当应用程序启动时,我需要下载炒作分数,以及以类似方式对每个游戏所做的评论,这些评论在任何给定时刻都会显示出来,通常为15。我可以发出一个请求,获取所有游戏的所有宣传,然后用C语言进行分类,但是我希望游戏能够非常频繁地循环,因此获取所有游戏的所有宣传最终会导致大量下载。