سؤال

وأنا أحاول أن إلغاء تسلسل تيار ولكن أنا دائما الحصول على هذا الخطأ "نهاية ستريم اجه قبل الانتهاء من توزيع"؟

وهنا هو رمز:

        //Some code here
        BinaryFormatter b = new BinaryFormatter();
        return (myObject)b.Deserialize(s);//s---> is a Stream object that has been fill up with data some line over here

وأي واحد لديهم أفكار؟

هل كانت مفيدة؟

المحلول

ومحاولة لتعيين موضع إلى 0 من تيار وعدم استخدام وجوه الخاص بك ولكن نوع الكائن.

        BinaryFormatter b = new BinaryFormatter();
        s.Position = 0;
        return (YourObjectType)b.Deserialize(s);

نصائح أخرى

تأكد من اكتمال التسلسل، وهذا نوع التسلسل يطابق نوع دي التسلسل (أي، تأكد من أنك تسلسل مع BinaryFormatter إذا كنت-تسلسل دي مع واحدة). أيضا، تأكد من أن تيار لك تسلسل على الانتهاء حقا تسلسل، مع Stream.Flush () أو شيء بهذا المعنى.

وكان الاستثناء نفسه ألقيت، حتى أضفت [تسلسل الكود إلى فئة كنت إجراء تسلسل:)

وبعد ذلك كل شيء عملت تماما.

s.Position = 0;

وهذا لأن لديك للذهاب الى بداية العودة إلى بدء نسخ البيانات على مجموعة!

في حالتي كنت:

stream.Seek(0, SeekOrigin.Begin);

وبعد أن تسلسل تيار، وقبل أن إلغاء تسلسل تيار يعمل السحر. ويساعد هذا الأمل!

وأنا فقط اجه خطأ مشابهة

وكان نحو الحصول على نوع بيانات مختلف عندما تسلسل وdeserializing. عن طريق الخطأ، عند تخزين البيانات إلى MariaDB لكنت MediumText وعند الحصول على بيانات اعتدت نص هذا هو السبب في أنني فقط حصلت على جزء من تيار.

وانظروا فقط إذا كانت أنواع البيانات هي نفسها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top