Tôi có đoạn code sau đây để đọc dữ liệu từ một Stream (trong trường hợp này, từ một đường ống đặt tên) và thành một mảng byte:Cách tốt nhất để chuyển đổi luồng (không biết chiều dài) thành mảng byte, trong .NET?
// NPSS is an instance of NamedPipeServerStream
int BytesRead;
byte[] StreamBuffer = new byte[BUFFER_SIZE]; // size defined elsewhere (less than total possible message size, though)
MemoryStream MessageStream = new MemoryStream();
do
{
BytesRead = NPSS.Read(StreamBuffer, 0, StreamBuffer.Length);
MessageStream.Write(StreamBuffer, 0, BytesRead);
} while (!NPSS.IsMessageComplete);
byte[] Message = MessageStream.ToArray(); // final data
Ông có thể xin hãy xem và cho tôi biết nếu nó có thể được thực hiện hiệu quả hơn hoặc gọn gàng? Dường như hơi lộn xộn một chút, bằng cách sử dụng MemoryStream. Cảm ơn!
Điều này đọc đến cuối luồng, nhưng mục đích là chỉ đọc cho đến khi 'IsMessageComplete'. –
Cảm ơn bạn đã liên kết đến bài viết; có vẻ như tôi đang làm khá nhiều thuật toán tương tự nhưng với một điều kiện kết thúc khác trên vòng lặp. –
Cảm ơn. Nó giúp tôi giải quyết vấn đề của mình. – nvtthang