我正在尝试逐步下载一系列序列化数据。目标是从服务器发送一个大块,并在客户端下载时对其进行部分处理。

我正在使用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();
    }

最佳答案

不要为此使用WebClient,而应使用套接字(如果可能)。

Mike Schwarz具有出色的套接字客户端,可以使用

http://weblogs.asp.net/mschwarz/archive/2008/03/07/silverlight-2-and-sockets.aspx

关于silverlight - Silverlight WebClient渐进式下载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/980590/

10-12 03:57