private void bgw_Generate_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; var commands = GetBatTxt(); var sumCount = commands.Count; for (int i = 0; i < sumCount; i++) { #region 1.执行处理逻辑 var executor = new ExecutorExpert(commands[i]); executor.Parse(); GenerateAppendText.Append(executor.Execute()); #endregion #region 2.计算完成度 var percentum = Convert.ToInt32((i + 1) / Convert.ToDouble(sumCount) * 100); worker.ReportProgress(percentum); if (worker.CancellationPending) //获取程序是否已请求取消后台操作 { e.Cancel = true; break; } #endregion } }
static void Main(string[] args) { MiniAbp.MiniAbp.StartWithSqlServer(GetConnectionString()); string exeDir = string.Empty; if (args != null && args.Length == 1) { exeDir = args[0]; } else { exeDir = Console.ReadLine(); } if (!Directory.Exists(exeDir)) { Console.WriteLine($"文件夹路径不存在: {exeDir}"); } DirectoryInfo di = new DirectoryInfo(exeDir); var files = di.GetFiles(); StringBuilder sb = new StringBuilder(); var ii = 0; files.Foreach(i => { try { var sqls = File.ReadAllText(i.FullName); ExecutorExpert e = new ExecutorExpert(sqls); e.Parse(); var result = e.Execute(); Console.WriteLine($"正在执行第{++ii}条命令集."); sb.Append(result); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }); // 保存路径 var storedFullName = Path.Combine(exeDir, $"执行结果_{DateTime.Now.ToString("MM-dd-hhmmss")}.sql"); File.WriteAllText(storedFullName, sb.ToString()); Console.WriteLine("执行完成!"); }