コード例 #1
0
ファイル: FindTargetsViewModel.cs プロジェクト: zoombapup/ATF
        void RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (!e.Cancelled && e.Error == null && e.Result is IList <ITarget> )
            {
                Dispatcher.CurrentDispatcher.BeginInvoke((Action)(() =>
                {
                    foreach (var target in (IList <ITarget>)e.Result)
                    {
                        if (target != null)
                        {
                            var protocol = m_parent.Protocols.FirstOrDefault(x => x.Id == target.ProtocolId);
                            if (protocol != null)
                            {
                                FoundTargets.Add(new TargetViewModel(target, protocol));
                            }
                        }
                    }
                }));
            }

            m_worker.DoWork             -= DoWork;
            m_worker.RunWorkerCompleted -= RunWorkerCompleted;
            m_worker   = null;
            IsScanning = false;
        }
コード例 #2
0
ファイル: FindTargetsViewModel.cs プロジェクト: zoombapup/ATF
 private void AddAllFoundTargets()
 {
     foreach (var target in FoundTargets.ToArray())
     {
         AddFoundTarget(target);
     }
 }
コード例 #3
0
ファイル: FindTargetsViewModel.cs プロジェクト: zoombapup/ATF
        private void AddFoundTarget()
        {
            var foundTargets = FoundTargets.Where(x => x.IsSelected).ToArray();

            foreach (var target in foundTargets)
            {
                AddFoundTarget(target);
            }
        }
コード例 #4
0
    public void Execute()
    {
        DriveInfo[] driveInfos = DriveInfo.GetDrives();

        Console.WriteLine("Start searching");
        foreach (var driveInfo in driveInfos)
        {
            if (!driveInfo.IsReady)
            {
                continue;
            }

            Console.WriteLine("Locating directories for drive: " + driveInfo.RootDirectory);
            GetAllDirs(driveInfo.RootDirectory.ToString());
            Console.WriteLine("Found {0} folders", DirsToSearch.Count);

            foreach (var ext in _targetExtensions)
            {
                Console.WriteLine("Searching for .*" + ext);

                int currentNotificationProgress = 0;
                for (int i = 0; i < DirsToSearch.Count; i++)
                {
                    int progressPercentage = (i * 100) / DirsToSearch.Count;
                    if (progressPercentage != 0)
                    {
                        if (progressPercentage % 10 == 0 && currentNotificationProgress != progressPercentage)
                        {
                            Console.WriteLine("Completed {0}%", progressPercentage);
                            currentNotificationProgress = progressPercentage;
                        }
                    }

                    var dir = DirsToSearch[i];
                    try
                    {
                        string[] files = Directory.GetFiles(dir, "*." + ext, SearchOption.TopDirectoryOnly);
                        foreach (var file in files)
                        {
                            FoundTargets.Enqueue(file);
                        }
                    }
                    catch (UnauthorizedAccessException ex)
                    {
                        Console.WriteLine("Skipping directory: {0}", dir);
                        DirsToSearch.Remove(dir);
                    }
                }

                Console.WriteLine("So far located {0} targets", FoundTargets.Count);
            }

            DirsToSearch.Clear();
        }

        Console.WriteLine("Stop searching");
    }
コード例 #5
0
ファイル: FindTargetsViewModel.cs プロジェクト: zoombapup/ATF
 private void AddFoundTarget(TargetViewModel target)
 {
     if (target != null)
     {
         if (!m_parent.Targets.Select(x => x.Target).Contains(target.Target))
         {
             FoundTargets.Remove(target);
             target.IsSelected = false;
             m_parent.Targets.Add(target);
         }
     }
 }
コード例 #6
0
ファイル: FindTargetsViewModel.cs プロジェクト: zoombapup/ATF
        private void ToggleScan()
        {
            if (!IsScanning && m_worker == null)
            {
                IsScanning = true;
                FoundTargets.Clear();

                m_worker = new BackgroundWorker {
                    WorkerSupportsCancellation = true
                };
                m_worker.DoWork             += DoWork;
                m_worker.RunWorkerCompleted += RunWorkerCompleted;
                m_worker.RunWorkerAsync(this);
            }
            else if (IsScanning && m_worker != null)
            {
                m_worker.CancelAsync();
            }
        }