Binary XmlDictionaryReader/Writer => Exception, wenn der Stream gelesen wird
-
segunda-feira, 27 de fevereiro de 2012 18:23
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
Todas as Respostas
-
segunda-feira, 27 de fevereiro de 2012 20:00
Hallo zusammen,
ich habe es hinbekommen, es war noch ein Fehler in meiner Stream Klasse.
Ich habe nun die BlockingStream Klasse von http://msdn.microsoft.com/en-us/magazine/cc163290.aspx als Basis hergenommen und an meine Bedürfnisse angepasst und damit funktioniert nun auch das gleichzeitige Lesen/Schreiben des Streams mit dem binären XmlDictionaryWriter/Reader.
Viele Grüße
Thomas- Marcado como Resposta Robert BreitenhoferMicrosoft Contingent Staff, Moderator quinta-feira, 15 de março de 2012 16:39

