private bool IsRootElement(HierarchicalLink <FileSystemInfo> link) { if ((link.Parent == null) != (document.Root == null)) { throw new XmlException(); } return(link.Parent == null && document.Root == null); }
private void RenderFsEntryToTreeView(HierarchicalLink <FileSystemInfo> link) { var newNode = new TreeNode(link.Child.Name); var parentNodeCollection = link.Parent == null ? treeView.Nodes : fsEntriesToTreeNodesMap[link.Parent].Nodes; treeView.Invoke(addTreeNodeFunc, parentNodeCollection, newNode); fsEntriesToTreeNodesMap[link.Child] = newNode; }
private void WriteFsEntryToXml(HierarchicalLink <FileSystemInfo> link) { var newNode = FsEntryXmlSerializer.ToXElement(link.Child); if (IsRootElement(link)) { document.Add(newNode); } else { var parentElement = fsEntriesToXElementsMap[link.Parent]; parentElement.Add(newNode); } fsEntriesToXElementsMap[link.Child] = newNode; document.Save(filePath); }
private void PublishNewFsEntry(FileSystemInfo parent, FileSystemInfo child) { var link = new HierarchicalLink <FileSystemInfo>(parent, child); foreach (var queue in PubList) { try { Monitor.Enter(queue); queue.Enqueue(link); } finally { Monitor.Exit(queue); } } FsEntryScannedEvent.Set(); }