0
在SL4应用程序中,我通过使用HttpWebRequest在同一时间(+〜3秒)内向服务器执行很多请求(30)。其结果是我收到的答复相同的计数,并开始处理流Silverlight:StreamReader对于浏览器缓存工作缓慢
HttpWebRequest request = (HttpWebRequest) asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse) request.EndGetResponse(asynchronousResult)
using (var stream = new StreamReader(response.GetResponseStream()))
{
var str = stream.ReadToEnd();
var doc = XDocument.Parse(str);
}
- 所有responsies接收(服务器返回304 - 不修改)
- 对于每个响应程序创建新的线程(因为asynchronusResult的)。
- 当我尝试从流中获取数据时,stream.ReadToEnd()方法工作时需要很长时间。我现在不在ReadToEnd()内部,但似乎流读取在一个线程中执行或发生任何锁定。有任何想法吗?? 为什么会发生?一切都封装在不同的线程中,除了这种方法之外,它的工作很快
I/O始终是程序的缓慢部分。使用多个线程无济于事,您的机器仍然只有一个TCP/IP驱动程序堆栈和一个网卡。或者如果这是磁盘来自缓存。是的,在操作系统代码中嵌入了锁,可以访问这些共享资源。 – 2012-02-27 13:48:38