コード例 #1
0
        private void CleanCleanBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            var worker = (BackgroundWorker)sender;

            IsCleaningCache = true;
            OutputText      = string.Empty;
            ErrorText       = string.Empty;
            worker.ReportProgress(0);

            //使用CMD清理Winsxc等
            //CacheCacheByCmd(worker);
            //删除文件
            var toCleanFolders = SelectedItems.Select(I => I.ModuleFolder).ToList();

            Application.Current.Dispatcher.Invoke(() => { ItemsSource.Clear(); });
            CleanCacheUsingFileUtil(worker, toCleanFolders);

            //删除文件夹下所有的空文件夹
            foreach (var folder in ToCleanUpManager.GetFolders())
            {
                try
                {
                    FolderUtil.DeleteEmptyFolder(folder, false);
                }
                catch (Exception exception)
                {
                    LogHelper.Error(exception.Message);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 时间较长,额外处理
        /// </summary>
        private async void ExecuteDelayCommands()
        {
            var cleanDelayedCommands = ToCleanUpManager.GetCleanDelayedCommands();

            foreach (var cleanDelayedCommand in cleanDelayedCommands)
            {
                await Task.Run(() =>
                {
                    ExecuteCmdHelper.ExecuteCmd(cleanDelayedCommand);
                });

                OutputText += $"删除命令{cleanDelayedCommand}\r\n";
            }
        }
コード例 #3
0
        /// <summary>
        /// 执行Cmd命令清理缓存
        /// </summary>
        /// <param name="worker"></param>
        private void CacheCacheByCmd(BackgroundWorker worker)
        {
            worker.ReportProgress(0);
            var commands = ToCleanUpManager.GetCleanCacheCommands();

            int index = 0;

            foreach (var command in commands)
            {
                index++;
                var currentOperationError  = string.Empty;
                var currentOperationOutput = string.Empty;
                try
                {
                    var currentOperationDetail = $"执行{command},可能需要几分钟,请等待";
                    worker.ReportProgress(-1,
                                          new ProgressChangedContent()
                    {
                        OperationDetail = currentOperationDetail,
                    });
                    if (command.Contains(@"C:\Windows\Installer\$PatchCache$"))
                    {
                        ExecuteCmdHelper.ExecuteCmd("Net Start msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd("Net Stop msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd(@"Reg Add HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /t REG_DWORD /d 0 /f");
                        ExecuteCmdHelper.ExecuteCmd(command);
                        ExecuteCmdHelper.ExecuteCmd("Net Start msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd("Net Stop msiserver /Y");
                        ExecuteCmdHelper.ExecuteCmd(@"Reg Add HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /t REG_DWORD /d 10 /f");
                        ExecuteCmdHelper.ExecuteCmd("Net Start msiserver /Y");
                    }
                    var executeCmdResult = ExecuteCmdHelper.ExecuteCmd(command);
                    currentOperationOutput += $"命令{command}";
                }
                catch (Exception e)
                {
                    LogHelper.Error(e.Message);
                    currentOperationError = $"{command}执行失败";
                }
                finally
                {
                    worker.ReportProgress(Convert.ToInt32(Convert.ToDouble(index) / Convert.ToDouble(commands.Count)),
                                          new ProgressChangedContent()
                    {
                        OperationOutput = currentOperationOutput,
                        OperationError  = currentOperationError
                    });
                }
            }
        }