를 사용하는 동안 : 내가 비동기 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 컨텍스트에서이 메서드에서 생성 된 작업에 대해 '대기'또는 '결과'를 호출 하시겠습니까? 그렇다면 교착 상태가 발생합니다. – Servy
매번 처음 1024 바이트의 스트림을 읽고 다음 바이트 세트로 이동하지 않습니까? –