예제 #1
0
        /// <summary>
        /// 释放资源
        /// </summary>
        public void Clear()
        {
            if (AllFileNodeX != null)
            {
                AllFileNodeX.Clear();
            }
            if (GetUserPartitionFiles != null)
            {
                GetUserPartitionFiles.Clear();
            }

            Asyn = null;
        }
예제 #2
0
        /// <summary>
        /// 创建数据字典
        /// </summary>
        /// <param name="linkInfo"></param>
        /// <returns></returns>
        public Dictionary <ulong, ICollection <FNodeX> > BuildDataDictionary(LINK_DIR_FILE_NODE_INFO linkInfo)
        {
            var data = new Dictionary <ulong, ICollection <FNodeX> >();

            while (linkInfo.next != IntPtr.Zero)
            {
                linkInfo = linkInfo.next.ToStruct <LINK_DIR_FILE_NODE_INFO>();
                if (linkInfo.NodeDataInfo.FileId == linkInfo.NodeDataInfo.ParentFileId)
                {
                    continue;
                }
                ulong  parentId = linkInfo.NodeDataInfo.ParentFileId;
                FNodeX file     = BuildFileXNode(linkInfo.NodeDataInfo);
                if (data.ContainsKey(parentId))
                {
                    if (!file.IsDelete)
                    {
                        data[parentId].Add(file);
                    }
                }
                else
                {
                    data.Add(parentId, new Collection <FNodeX> {
                        file
                    });
                }
                if (RunPartition.VolName != null && RunPartition.VolName.Equals("userdata", StringComparison.OrdinalIgnoreCase))
                {
                    GetUserPartitionFiles.Add(file);
                }
                AllFileNodeX.Add(file);
            }

            foreach (var nfid in _delFolderIdSet)
            {
                if (_normalFolderIdSet.Contains(nfid))
                {
                    _problemFolderIdSet.Add(nfid);
                }
            }
            return(data);
        }