Silverlight WebClient 渐进式下载

3
我正在尝试逐步下载一系列序列化数据。目标是从服务器发送一个大块,同时在客户端部分处理它,而它还在下载中。
我使用System.Net.WebClient类,并将其AllowReadStreamBuffering属性设置为false。根据MSDN文档,这应该允许我从OpenReadCompleted事件访问传入的流。
然而,当我尝试访问流时,它会抛出NotSupportedException异常。这不是跨域策略问题,如果我将AllowReadStreamBuffering属性设置为true,则可以完美地加载和读取内容。我错过了什么吗?我应该如何执行来自Silverlight的渐进式下载?
复制此问题的最小代码如下:
    private void BeginProgressiveDownload()
    {
        WebClient client = new WebClient();
        client.AllowReadStreamBuffering = false;
        client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
        client.OpenReadAsync(new Uri("http://STREAMABLE RESOURCE HERE"));
    }

    void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        e.Result.ReadByte();
    }
2个回答

0

你正在使用IE下载少于4kb的数据吗?IE不会在你拥有超过4kb之前提供数据。超过4kb后,你就拥有了所有需要的细节。可能的解决方案:

  • 发送垃圾数据以达到4kb
  • 如果你知道请求将很小,请将AllowReadStreamBuffering设置为true。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接