private void bkDoProcess_DoWork(object sender, DoWorkEventArgs e) { StringBuilder sb = new StringBuilder(); ExecModel execModel = (ExecModel)e.Argument; _swAll.Start(); int procFileCnt = 0; foreach (string line in txtSource.Lines) { string file = line.Trim(); string space = new string(' ', line.Length - file.Length); if (file == "" || !File.Exists(file)) { sb.AppendLine(line); } else { string hashResult; switch (execModel) { case ExecModel.RHashDll: hashResult = CreateEd2kLinkByRHash(file); break; case ExecModel.RHashExe: hashResult = CreateEd2kLinkByRHashExe(file); break; default: throw new ArgumentOutOfRangeException(); } sb.AppendLine(space + hashResult); bkDoProcess.ReportProgress(++procFileCnt); } if (bkDoProcess.CancellationPending) { break; } } e.Result = sb.ToString().Trim(); _swAll.Stop(); }
private void DoCalculate(ExecModel execModel) { UIInProcess(true); txtTarget.Clear(); bkDoProcess.RunWorkerAsync(execModel); }