Пример #1
0
        private void WorkerOnDoWork(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            WorkerParam param = doWorkEventArgs.Argument as WorkerParam;

            doWorkEventArgs.Result = new WorkerResult()
            {
                Times    = PingUtil.Ping(param.Address),
                RowIndex = param.RowIndex
            };
        }
Пример #2
0
        private void _BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            OnPropertyChanged("isWorkerRunning");
            BackgroundWorker worker = (BackgroundWorker)sender;
            WorkerParam      param  = (WorkerParam)e.Argument;

            WorkerStatus = "Update Started!";

            _repository.UpdateData(param.Query, param.Type, param.MaxAge, worker, e);
        }
Пример #3
0
        /// <summary>
        /// ZIPファイルの画像をWebPに変換してZIPファイルとして再度作成する
        /// </summary>
        /// <param name="zipFile">ZIPファイルパス</param>
        /// <param name="param">変換パラメーター</param>
        /// <returns></returns>
        private static bool imageZipToWebpZip(string zipFile, WorkerParam param)
        {
            string workDir = "";

            try
            {
                //作業フォルダを作成
                workDir = createWorkDir();
                Log.Info($"作業フォルダ={workDir}");
                Encoding entryEnc = param.UseSjisEnc ? _zipEntrySjisEncoding : _zipEntryDefaultEncoding;

                //ZIP展開
                if (!unzip(zipFile, workDir, entryEnc))
                {
                    return(false);
                }

                //画像ファイル一覧を取得
                var imageFileList = Directory.GetFiles(workDir).Where(
                    file => _imageExtList.Any(ext => file.ToLower().EndsWith(ext)));
                if (!imageFileList.Any())
                {
                    Log.Error("変換対象ファイルが見つからない");
                    return(false);
                }

                //画像を変換する
                var loopResult = Parallel.ForEach(imageFileList, (imageFile, loopState) =>
                {
                    if (!imageToWebp(imageFile, param.Quality, true))
                    {
                        loopState.Stop();
                    }
                });
                if (!loopResult.IsCompleted)
                {
                    Log.Warn("WebP変換処理エラーにより処理中断");
                    return(false);
                }

                //ZIPに固める
                var workZipFile = workDir + ".zip";
                if (!zip(workDir, workZipFile, param.Level, entryEnc))
                {
                    return(false);
                }

                //元の位置に移動する
                if (param.IsDelete)
                {
                    //もとにファイルに上書き
                    File.Move(workZipFile, zipFile, true);
                }
                else
                {
                    //別名で保存
                    var zipDirPath = Path.GetDirectoryName(zipFile);
                    if (zipDirPath == null)
                    {
                        return(false);
                    }

                    var moveZipPath = Path.Combine(zipDirPath, Path.GetFileNameWithoutExtension(zipFile)
                                                   + "_webp.zip");
                    File.Move(workZipFile, moveZipPath, true);
                }
            }
            catch (Exception e)
            {
                Log.Error(e, "変換処理例が発生");
                return(false);
            }
            finally
            {
                //作業フォルダを削除
                if (!string.IsNullOrEmpty(workDir))
                {
                    if (Directory.Exists(workDir))
                    {
                        Directory.Delete(workDir, true);
                    }
                }
            }

            return(true);
        }