を使用している:私は非同期MemoryStream
に書き込むStream
を読みしようとしていますが、Do...while
ループを破るために失敗している無限ループない...私は次のコードしている非同期待つ
public static async Task<string> ReadLineAsync(this Stream stream, Encoding encoding)
{
byte[] byteArray = null;
using (MemoryStream ms = new MemoryStream())
{
int bytesRead= 0;
do
{
byte[] buf = new byte[1024];
try
{
bytesRead = await stream.ReadAsync(buf, 0, 1024);
await ms.WriteAsync(buf, 0, bytesRead);
}
catch (Exception e)
{
Console.WriteLine(e.Message + e.StackTrace);
}
} while (stream.CanRead && bytesRead> 0);
byteArray = ms.ToArray();
return encoding.GetString(ms.ToArray());
}
。私はそれが無限ループであることを意味します。これを解決するには?
デバッガで試しましたか? –
UIコンテキストでこのメソッドから生成されたタスクで 'Wait'または' Result'を呼び出していますか?もしそうなら、デッドロックが発生します。 – Servy
あなたはストリームの最初の1024バイトを毎回読み込み、次のバイトセットに移動していませんか? –