public void ExecuteNonAsync(ParamsScript script, ParamsDB paramsDB = null) { try { Task.Run(() => Execute(script, paramsDB)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public async Task ExecuteAsync(ParamsScript script, ParamsDB paramsDB = null) { try { await Task.Run(() => Execute(script, paramsDB)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public Task TaskExecute(ParamsScript script, ParamsDB paramsDB = null) { try { return(new Task(() => { Execute(script, paramsDB); } )); } catch (Exception ex) { throw new Exception(ex.Message); } }
void Execute(ParamsScript script, ParamsDB paramsDB) { string Credentials, ComandoStartNewWindow, FileNameSystem; if (CriarNovaJanela && Environment.OSVersion.Platform == PlatformID.Win32NT) { ComandoStartNewWindow = "start "; } else { ComandoStartNewWindow = ""; } if (Environment.OSVersion.Platform == PlatformID.Unix) { FileNameSystem = "/bin/bash"; } else { FileNameSystem = "cmd.exe"; } if (paramsDB != null) { Credentials = paramsDB.GetCredentials(); CriarNovaJanela = paramsDB.CriarNovaJanela; } else { Credentials = GetCredentials(); } if (CriarNovaJanela && Environment.OSVersion.Platform == PlatformID.Win32NT) { ComandoStartNewWindow = "start "; } else { ComandoStartNewWindow = ""; } if (!Directory.Exists(script.ScriptDir)) { Directory.CreateDirectory(script.ScriptDir); throw new Exception($@"Insert script file in path:\n{script.ScriptDir}"); } using (Process process = new Process()) { process.StartInfo.UseShellExecute = false; process.StartInfo.WorkingDirectory = script.ScriptDir; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardInput = true; process.StartInfo.FileName = FileNameSystem; process.StartInfo.CreateNoWindow = !CriarNovaJanela; process.Start(); ProcessID = process.Id; string ProcPar = $@"{ComandoStartNewWindow}{PathClient}sqlplus.exe {Credentials} @{script.ScriptName} {script.Parameters}"; process.StandardInput.WriteLine(ProcPar); process.StandardInput.Flush(); process.StandardInput.Close(); if (script.Debug) { DebugEventParams.Invoke(ProcPar + Environment.NewLine); } while (!process.StandardOutput.EndOfStream) { DebugEventParams.Invoke(process.StandardOutput.ReadLine() + Environment.NewLine); } process.WaitForExit(); } }