private void FilesView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            DirComparatorFileInfo file = ((ListViewItem)sender).Content as DirComparatorFileInfo;

            if (file != null)
            {
                Process.Start("explorer.exe", "/select," + file.File.FullName);
            }
        }
Ejemplo n.º 2
0
        public async Task <DirComparatorResult> CompareAsync()
        {
            StatusChanged?.Invoke(new DirComparatorStatus()
            {
                Action = DirComparatorAction.Listing, Side = DirComparatorSide.LeftFolder
            });
            FileInfo[] left = await Task.Run(() => leftDir.GetFiles("*", SearchOption.AllDirectories));

            StatusChanged?.Invoke(new DirComparatorStatus()
            {
                Action = DirComparatorAction.Listing, Side = DirComparatorSide.RightFolder
            });
            FileInfo[] right = await Task.Run(() => rightDir.GetFiles("*", SearchOption.AllDirectories));

            //FILTERING
            if (ignore != null)
            {
                left = await Task.Run(() => Filter(left, DirComparatorSide.LeftFolder));

                right = await Task.Run(() => Filter(right, DirComparatorSide.RightFolder));
            }

            //HASH
            var lefthashtask  = Task.Run(() => Hash(left, DirComparatorSide.LeftFolder));
            var righthashtask = Task.Run(() => Hash(right, DirComparatorSide.RightFolder));
            await Task.WhenAll(lefthashtask, righthashtask);

            // COMPARE

            var comparetask = await Task.Run(() => Compare(lefthashtask.Result.Files, righthashtask.Result.Files));

            var result = new DirComparatorResult()
            {
                Common         = DirComparatorFileInfo.ConvertAllToArray(comparetask.Common.Values, DirComparatorFileInfo.FileType.Common),
                Left           = DirComparatorFileInfo.ConvertAllToArray(comparetask.Left.Values, DirComparatorFileInfo.FileType.Unique),
                DuplicateLeft  = lefthashtask.Result.Duplicates.ToArray(),
                Right          = DirComparatorFileInfo.ConvertAllToArray(comparetask.Right.Values, DirComparatorFileInfo.FileType.Unique),
                DuplicateRight = righthashtask.Result.Duplicates.ToArray()
            };

            Completed?.Invoke(result);
            return(result);
        }