示例#1
0
        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;
        }
示例#3
0
        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();
        }