Я использую класс XmlWriter для генерации xml файлов, я хочу ускорить операцию.
Я заметил, что для создания каждого файла требуется больше времени, чем для создания предыдущего.
Я не знаю, возникает ли проблема из класса XmlWriter, который используется для генерации файлов, или из for l oop ...
private void StartButton_Click(object sender, EventArgs e)
{
try
{
LogInformation("\nRécupération des informations des épisodes à compléter ....\n");
DataMag dataMag = new DataMag();
if (dataMag.episodes.Count == 0)
LogInformation("Aucun épisode n'est trouvé");
int filesCounter = 0;
for (int i = 0; i < dataMag.episodes.Count; i += Configuration.NbEpisodesPerXMLFile)
{
filesCounter++;
string xMLDocumentTitle = "\\Completor_" + string.Format("{0:00}", filesCounter) + ".xml";
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = System.Text.Encoding.UTF8;
using (XmlWriter writer = XmlWriter.Create(Configuration.OutputFolderPath + xMLDocumentTitle, settings))
{
//Mise en forme des balises xml
XMLDataNode xMLDataNode = new XMLDataNode();
XMLBuilder.BuildXMLNode(xMLDataNode);
writer.WriteStartDocument();
writer.WriteStartElement(xMLDataNode.ProgramTag);
for (int j = i; j < i + Configuration.NbEpisodesPerXMLFile && j < dataMag.episodes.Count; j++)
{
try
{
writer.WriteStartElement(xMLDataNode.PruductTag);
writer.WriteAttributeString(xMLDataNode.RefWatsOnAttribute, dataMag.episodes[j].RefWatsOn);
writer.WriteAttributeString(xMLDataNode.ADValueAttribute, dataMag.episodes[j].ADValue.ToString().ToLower());
writer.WriteAttributeString(xMLDataNode.VMValueAttribute, dataMag.episodes[j].VMValue.ToString().ToLower());
writer.WriteAttributeString(xMLDataNode.IndEpiIneditTNTAttribute, dataMag.episodes[j].IndEpiIneditTNT.ToString().ToLower());
writer.WriteAttributeString(xMLDataNode.IndQuotaIneditNT1Attribute, dataMag.episodes[j].IndQuotaIneditNT1.ToString().ToLower());
writer.WriteAttributeString(xMLDataNode.IndQuotaIneditTMCAttribute, dataMag.episodes[j].IndQuotaIneditTMC.ToString().ToLower());
writer.WriteAttributeString(xMLDataNode.DepRangTeleAttribute, dataMag.episodes[j].DepRangTele.ToString());
writer.WriteAttributeString(xMLDataNode.DepRangTf1Attribute, dataMag.episodes[j].DepRangTf1.ToString());
writer.WriteFullEndElement();
LogInformation($"Taritement l'épisode NumEM : {dataMag.episodes[j].NumEM}, RefWatsOn: {dataMag.episodes[j].RefWatsOn} .... OK");
}
catch (Exception ex)
{
LogInformation($"Erreur lors du traitement de l'épisode suivant : NumEM : {dataMag.episodes[j].NumEM}, RefWatsOn: {dataMag.episodes[j].RefWatsOn}, erreur: {ex.Message}");
}
}
writer.WriteEndElement();
writer.WriteEndDocument();
startButton.Enabled = false;
}
LogInformation($"\nLe fichier {xMLDocumentTitle} est généré avec succès\n");
}
LogInformation("Fin du traitement avec succès");
}
catch (Exception ex)
{
LogInformation("Une erreur s'est produite :" + ex.Message);
startButton.Enabled = false;
}