Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Visual Studio 15 SP 1

01.04.16 14:13
Re: Visual Studio 15 SP 1
 
Murr патриот
Murr
в ответ Murr 23.03.16 16:52

Это не сама студия, но тесно связанная штука... причем из старых...


Задача - дописать в ХМЛ-файл (во фрагмент данных) очередную порцию данных.


Решается - элементарно:


using(StreamWriter sw = File.AppendText(filename.DataFilename))

using(XmlWriter xmlDataWriter = XmlWriter.Create(sw, xws))

{

// работаем по добавлению данных
}


Код получился не слишком красивым и повторять его каждый раз не хочется - убираем создание XmlWrite в какой-нибудь класс и пишем:


using(XmlWriter xmlDataWriter = filename.XmlDataWriter)

{

// работаем по добавлению данных
}


XmlDataWriter имплементируем как:

XmlWriter xmlDataWriter = null;

public XmlWriter XmlDataWriter

{

get

{

if (xmlDataWriter == null || xmlDataWriter.WriteState == WriteState.Closed)

{

XmlWriterSettings xws = new XmlWriterSettings();

xws.ConformanceLevel = ConformanceLevel.Fragment;

xws.Indent = false;

xws.NewLineHandling = NewLineHandling.None;

xws.OmitXmlDeclaration = true;


xmlDataWriter = XmlWriter.Create(File.AppendText(filename.DataFilename), xws);

}

return xmlDataWriter;

}

}


Тестим - все работает...


Теперь пишем два раза подряд :

using(XmlWriter xmlDataWriter = filename.XmlDataWriter)

{

// работаем по добавлению данных
}


using(XmlWriter xmlDataWriter = filename.XmlDataWriter)

{

// работаем по добавлению данных
}


И имеем... облом... на втором открытии... да-да, несмотря на using смущ и тот факт что XmlWriter закрыт... и файл - тоже закрыт... смущ

 

Перейти на