Ejemplo n.º 1
0
        private void ComputeCheckSums(FileCheckSumRequest request)
        {
            _view.ProgressInfo = Resources.CheckSumInfoString;
            _view.Progress     = 0;

            string[] files = Directory.GetFiles(Settings.Default.PlanetsideInstallDir,
                                                "*", SearchOption.AllDirectories);

            Stopwatch sw = new Stopwatch();

            sw.Start();

            var writer = new StreamWriter(File.OpenWrite("extractFile.csv"));

            for (int i = 0; i < files.Length; i++)
            {
                if (files[i] != "extractFile.csv")
                {
                    string checksum = CheckSum.CalculateMD5(files[i]);
                    request.AddFile(files[i], checksum);
                    _view.Progress = (int)(100 * ((i + 1F) / files.Length));

                    writer.WriteLine("INSERT INTO client_files (filename, checksum) VALUES ('{0}', '{1}');",
                                     files[i].Replace(Settings.Default.PlanetsideInstallDir, "").Replace(@"\", @"/"),
                                     checksum);
                }
            }

            writer.Close();
            sw.Stop();

#if DEBUG
            _view.ProgressInfo = $"Checksum calculation took: {sw.Elapsed.Seconds.ToString()} seconds";
#endif
        }
Ejemplo n.º 2
0
        public override void Execute(object parameter)
        {
            HasExecuted = false;
            IsExecuting = true;
            CallCanExecuteChanged();

            Task.Factory.StartNew(() =>
            {
                try
                {
                    FileCheckSumRequest request = new FileCheckSumRequest();
                    ComputeCheckSums(request);

                    List <string> filesToUpdate = request.Send();

                    HasExecuted = true;
                }
                catch (Exception ex)
                {
                    _view.ProgressInfo = "Failed to update client files.";
                }

                IsExecuting = false;
                DispatchCanExecuteChanged();
            });
        }