2011-05-12 88 views
0

我很可能在这里丢失了一些东西,但在Silverlight中使用BeginGetResponse时我注意到性能非常低下。Silverlight ClientHttp请求的性能下降

需要很长一段时间的回火(10-20秒),我所做的要求是大量的资源,但我希望一旦头文件被解析就会触发回调(本质上即时)。

如果我将代码运行在.NET 4上,则立即触发回调。

这里是我使用在这两种情况下的代码(在.NET 4使用WebRequest.Create巴):

var url = @"insert http url to large resource here"; 

var req = WebRequestCreator.ClientHttp.Create(new Uri(url)); 

req.BeginGetResponse(r => 
{ 
    var res = req.EndGetResponse(r); 

    Debug.WriteLine("Got response"); 

}, null); 

在示例,即在10MB大小的资源,“得到响应”可以需要10秒才能在silverlight中开枪。

+0

当您运行代码两次(或更多)第二次更快时? – 2011-05-12 16:56:23

+0

不,不怕,不怕 – meandmycode 2011-05-12 17:41:44

回答

0

它在BeginGetResponse中下载10MB文件,这就是文件越大越慢的原因。更小的文件'更快得到响应'?

+0

较小的资源确实会更快地发射,但在回调触发时它不会被下载。当回调触发时,响应流刚刚开始填满 – meandmycode 2011-05-12 17:39:47