Поток был нечитаемой ошибкой

Я получаю сообщение "Поток не читаем" в инструкции:

using (StreamReader sr = new StreamReader(ms))

Я пробовал советы, размещенные здесь без успеха. Спасибо за помощь.

Это мой код:

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Conflict));
//Serialize Conflicts array to memorystream as XML
using (MemoryStream ms = new MemoryStream())
{
    using (StreamWriter sw = new StreamWriter(ms))
    {
        foreach (Conflict ct in Conflicts)      
            xmlSerializer.Serialize(sw, ct);

        sw.Flush(); //Site tip
        ms.Position = 0;  //Site tip
    }
    //Retrieve memory stream to string
    using (StreamReader sr = new StreamReader(ms))
    {
        string conflictXml = String.Format(CultureInfo.InvariantCulture, "{0}</NewDataSet>",

Ответы

Ответ 1

Когда этот блок кода будет завершен, он также удалит подключенный MemoryStream

using (StreamWriter sw = new StreamWriter(ms))
    {
foreach (Conflict ct in Conflicts)                                    xmlSerializer.Serialize(sw, ct);
sw.Flush(); //Site tip
ms.Position = 0;  //Site tip
}

Удалите инструкцию using и удалите поток вручную после того, как вы закончите с ним.

    StreamWriter sw = new StreamWriter(ms);

    foreach (Conflict ct in Conflicts)                                    xmlSerializer.Serialize(sw, ct);
    sw.Flush(); //Site tip
    ms.Position = 0;  //Site tip

// other code that uses MemoryStream here...

sw.Dispose();

Ответ 2

Попробуйте это вместо этого (предположим, что Conflicts имеет тип List<Conflict>):

XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Conflict>));
StringWriter sw = new StringWriter();
xmlSerializer.Serialize(sw, Conflicts);
string conflictXml = sw.GetStringBuilder().ToString();