none
Binary XmlDictionaryReader/Writer => Exception, wenn der Stream gelesen wird

    Pergunta

  • Hallo zusammen,

    ich habe ein Problem und hoffe Ihr könnt mir einen Tipp geben :)

    Und zwar habe ich einen Stream (eigene Klasse von MemoryStream abgeleitet) in welchem ich über einen XmlDictionaryWriter XML Daten im Binärformat speichere. Währenddessen der Stream noch geschrieben wird (diese Aktion kann lange dauern), würde ich schon gerne anfangen über den XmlDictionaryReader die Daten wieder im Binärformat zu lesen (aktuell in einem Testprogram in 2 verschiedenen Threads, später soll das ganze über WCF Streaming zwischen Client und Server funktionieren). Um ein gleichzeitiges lesen und schreiben zu ermöglichen (mit unterschiedlichen Positionen für Read und Write) hab ich mir die eigene Stream Klasse geschrieben. Dies funktioniert prinzipiell auch.

    Nun habe ich das Problem, das ich irgendwann - nachdem einige XmlElemente korrekt eingelesen werden konnten - beim lesen über binaryDictionaryReader.Read() folgende Exception bekomme:

    System.Xml.XmlException: {"The input source is not correctly formatted."}

    Wenn ich die Daten in meinem Stream nicht im Binärformat, sondern im Textformat speichere und lese (also XmlDictionaryWriter.CreateTextWriter und XmlDictionaryReader.CreateTextReader), dann funktioniert das gleichzeitige schreiben und auslesen perfekt. Ich würde die Sachen allerdings ganz gerne im Binärformat innerhalb des Streams ablegen, um die größe des Streams so gering wie möglich zu halten.

    Wenn ich den Stream zuerst komplett schreibe und danach komplett wieder lese, funktioniert sowohl der Text als auch der Binärmodus.

    Hat jemand schonmal was ähnliches versucht bzw. hat sonst einen Tipp wie ich das Problem beheben kann?

    Viele Grüße
    Thomas

    segunda-feira, 27 de fevereiro de 2012 18:23

Respostas