private void Unload(FactKeyDictionary page) { page.PeristenceState = PeristenceEnum.Unloading; if (page.ID == 11) { } Log("UnLoading page" + page.ID); lock (page.Locker) { if (page.IsDirty) { SaveToFS(page); } else { page.Clear(Log); } RemoveIDFromLoadedPages(page.ID); page.PeristenceState = PeristenceEnum.Unloaded; } }
//public object Locker = new Object(); public void SaveToFS(FactKeyDictionary page, Boolean unload = true) { Task.Run( () => { lock (page.Locker) { var state = page.PeristenceState; page.PeristenceState = PeristenceEnum.Saving; var msg = String.Format("Saveing page{0} to FS", page.ID); Log(msg); //Utilities.Logger.WriteLine(msg); var path = GetFilePath(page.ID); Utilities.FS.EnsurePath(path); //Utilities.FS.WriteAllText(path, page.Content()); using (System.IO.StreamWriter fsw = new System.IO.StreamWriter(path, false)) { foreach (var item in page.LookupOfIndexes) { fsw.WriteLine(FactKeyDictionary.Content(item)); } page.PeristenceState = state; } Log(String.Format("page{0} was saved to FS", page.ID)); page.IsDirty = false; if (unload) { page.Clear(Log); RemoveIDFromLoadedPages(page.ID); page.PeristenceState = PeristenceEnum.Unloaded; } } }); }