シリアル化されたデータの配列を徐々にダウンロードしようとしています。目標は、サーバーから単一の大きなブロックを送信し、ダウンロード中にクライアントで部分的に処理することです。
私は 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();
}