public async Task SaveWritableSettings(Settings ToSave) { XDocument WholeDocument = await XMLDataFileHandler.LoadFile(FileAccess.ReadWrite, FileShare.Read); XElement DynamicSettingsElement = WholeDocument.Root.Elements(xmlns + "DynamicSettings").First(); DynamicSettingsElement.Element(xmlns + "ImgurCommenters").ReplaceNodes( from C in ToSave.CommenterUsernames select new XElement(xmlns + "Commenter", new XAttribute("Username", C)) ); //DynamicSettingsElement.SetAttributeValue("PullCommentsFrequency", ToSave.PullCommentsFrequency); DynamicSettingsElement.SetAttributeValue("CommentsProcessedUpToInclusive", ToSave.CommentsProcessedUpToInclusive); DynamicSettingsElement.SetAttributeValue("PullCommentsPerUserRequestThreshhold", ToSave.RequestThreshholdPullCommentsPerUser); await XMLDataFileHandler.Save(WholeDocument, SavingOptions); }
public Task Save(Taglist ToSave, Lock Lock) { Initialize(); TaglistRepositoryLock DataFileLock = Lock as TaglistRepositoryLock; if (DataFileLock is null) { throw new ArgumentException("The supplied Lock was not returned by this class"); } if (DataFileLock.Released) { throw new ArgumentException("The supplied Lock has been released"); } try{ XDocument DataDocument = DataFileLock.LoadedDataDocument; XElement OldTaglistElement = ( from TL in DataDocument.Root.Elements(xmlns + "Taglist") where ToSave.Name.Equals( ((string)TL.Attribute("Name")).Normalize(NormalizationForm.FormKD), StringComparison.Ordinal ) select TL ).FirstOrDefault(); if (!(OldTaglistElement is null)) { OldTaglistElement.Remove(); } XElement NewTaglistElement = ToTaglistXML(ToSave); DataDocument.Root.Add(NewTaglistElement); return(XMLDataFileHandler.Save(DataDocument, SavingOptions, DataFileLock.Decorated)); }finally{ DataFileLock.Release(); } }