/// <summary> /// This method runs the RasDial executable with the specified arguments. /// </summary> /// <param name="Arguments">String: a string of arguments to pass to RasDial.exe</param> /// <returns>Task: RasDialProcess: Returns the stopped / resulting RasDial process.</returns> private static Task <RasDialProcess> RasDial(string Arguments = "") { return(Task.Run(() => { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = RasDialExe; startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; startInfo.Arguments = Arguments; RasDialProcess = new RasDialProcess(); RasDialProcess.StartInfo = startInfo; RasDialProcess.EnableRaisingEvents = true; RasDialProcess.OutputDataReceived += RasDialProcess_OutputDataReceived; RasDialProcess.Start(); RasDialProcess.BeginOutputReadLine(); RasDialProcess.WaitForExit(10000); if (!RasDialProcess.HasExited) { RasDialProcess.Kill(); } if (RasDialProcess.SuccessFromRasDial) { Logger.Info("RasDial: Success.", ConsoleColor.Green); } else { Logger.Error("RasDial: Failure."); } return RasDialProcess; })); }
/// <summary> /// This event fires whenever the RasDial process outputs data from the main console. /// </summary> private static void RasDialProcess_OutputDataReceived(object sender, DataReceivedEventArgs e) { RasDialProcess process = (RasDialProcess)sender; if (e.Data == null) { return; } if (e.Data == "Command completed successfully.") { process.SuccessFromRasDial = true; return; } Logger.Info("RasDial: " + e.Data, ConsoleColor.DarkCyan); }