Avatar ·

كيفية إنشاء مصفوفة بايتات من Stream في C#؟ دليل كامل

مرحباً بالجميع! أنا مبتدئ في C# وأعمل على تطبيق يقوم بتحميل الملفات من الإنترنت. أحتاج إلى قراءة جميع البيانات من NetworkStream أو FileStream إلى مصفوفة byte[]. المشكلة أنني لا أعرف حجم الـ Stream مسبقاً. حاولت استخدام الخاصية Length، لكنها ترمي استثناء NotSupportedException للعديد من التيارات. هذا هو الكود الحالي الذي لا يعمل:
// أحاول قراءة الـ Stream إلى مصفوفة بايتات
byte[] buffer = new byte[stream.Length]; // خطأ: 'Stream' does not support seeking
stream.Read(buffer, 0, buffer.Length);
يحدث هذا الخطأ عندما أعمل مع تيارات الشبكة (NetworkStream) أو تيارات من استجابات HTTP. أفهم أنني بحاجة لقراءة البيانات على أجزاء، لكنني لا أعرف كيفية تنظيم الحلقة بشكل صحيح. رأيت شيئاً عن MemoryStream، لكنني لست متأكداً من كيفية استخدامه. أرجو إرشادي، كيف يمكنني تحويل Stream إلى مصفوفة بايتات بشكل صحيح وفعال؟ يُفضل مع مثال كود لـ .NET 3.5 (لدي مشروع قديم).