WebAPI からストリームをダウンロードしており、ストリームの読み取り中にコードを実行しようとしています。
以下のコードは、Blazor サーバー側またはコンソール アプリで正常に動作します。しかし、blazor-client 側では、コードを実行する前にストリームが最初に完全にダウンロードされます.... ストリームが完了した後、 Console.WriteLine() だけでもコンソールへの書き込みが開始されます。最新の.Net Core 3.0 Preview 8を使用しています...
public async IAsyncEnumerable<SomeClass> GetDataAsync()
{
var serializer = new JsonSerializer();
using (var stream = await Http.GetStreamAsync("https://localhost:44334/api/values/i"))
{
using (var sr = new StreamReader(stream))
using (var jr = new JsonTextReader(sr))
{
while (await jr.ReadAsync()) //<-- Stream is fully download to browser before taking any actions.
{
if (jr.TokenType != JsonToken.StartArray && jr.TokenType != JsonToken.EndArray)
{
Console.WriteLine(jsonReader.LinePosition);
yield return serializer.Deserialize<SomeClass>(jr);
}
};
}
}
}
これを WireShark でテストして、これが発生していることを確認しました。
これは設計によるものですか?