RunAsync() public static method

Asynchronously execute a command line tool, calling the specified delegate on completion.
public static RunAsync ( string toolPath, string arguments, CompletionHandler completionDelegate, string workingDirectory = null, string>.Dictionary envVars = null, IOHandler ioHandler = null ) : void
toolPath string Tool to execute.
arguments string String to pass to the tools' command line.
completionDelegate CompletionHandler Called when the tool completes.
workingDirectory string Directory to execute the tool from.
envVars string>.Dictionary Additional environment variables to set for the command.
ioHandler IOHandler Allows a caller to provide interactive input and also handle /// both output and error streams from a single delegate.
return void
Esempio n. 1
0
 /// <summary>
 /// Asynchronously execute a command line tool in this window, showing progress
 /// and finally calling the specified delegate on completion from the main / UI thread.
 /// </summary>
 /// <param name="toolPath">Tool to execute.</param>
 /// <param name="arguments">String to pass to the tools' command line.</param>
 /// <param name="completionDelegate">Called when the tool completes.</param>
 /// <param name="workingDirectory">Directory to execute the tool from.</param>
 /// <param name="ioHandler">Allows a caller to provide interactive input and also handle
 /// both output and error streams from a single delegate.</param>
 /// <param name="maxProgressLines">Specifies the number of lines output by the
 /// command line that results in a 100% value on a progress bar.</param>
 /// <returns>Reference to the new window.</returns>
 public void RunAsync(
     string toolPath, string arguments,
     CommandLine.CompletionHandler completionDelegate,
     string workingDirectory         = null, Dictionary <string, string> envVars = null,
     CommandLine.IOHandler ioHandler = null, int maxProgressLines                = 0)
 {
     CommandLineDialog.ProgressReporter reporter =
         new CommandLineDialog.ProgressReporter(logger);
     reporter.maxProgressLines = maxProgressLines;
     // Call the reporter from the UI thread from this window.
     UpdateEvent += reporter.Update;
     // Connect the user's delegate to the reporter's completion method.
     reporter.Complete += completionDelegate;
     // Connect the caller's IoHandler delegate to the reporter.
     reporter.DataHandler += ioHandler;
     // Disconnect the reporter when the command completes.
     CommandLine.CompletionHandler reporterUpdateDisable =
         (CommandLine.Result unusedResult) => { this.UpdateEvent -= reporter.Update; };
     reporter.Complete += reporterUpdateDisable;
     logger.Log(String.Format(
                    "Executing command: {0} {1}", toolPath, arguments), level: LogLevel.Verbose);
     CommandLine.RunAsync(toolPath, arguments, reporter.CommandLineToolCompletion,
                          workingDirectory: workingDirectory, envVars: envVars,
                          ioHandler: reporter.AggregateLine);
 }
Esempio n. 2
0
 public void RunAsync(string toolPath, string arguments, CommandLine.CompletionHandler completionDelegate, string workingDirectory = null, Dictionary <string, string> envVars = null, CommandLine.IOHandler ioHandler = null, int maxProgressLines = 0)
 {
     CommandLineDialog.ProgressReporter reporter = new CommandLineDialog.ProgressReporter(this.logger);
     reporter.maxProgressLines = maxProgressLines;
     this.UpdateEvent         += new CommandLineDialog.UpdateDelegate(reporter.Update);
     reporter.Complete        += completionDelegate;
     reporter.DataHandler     += ioHandler;
     CommandLine.CompletionHandler value = delegate(CommandLine.Result unusedResult)
     {
         this.UpdateEvent -= new CommandLineDialog.UpdateDelegate(reporter.Update);
     };
     reporter.Complete += value;
     this.logger.Log(string.Format("Executing command: {0} {1}", toolPath, arguments), LogLevel.Verbose);
     CommandLine.RunAsync(toolPath, arguments, new CommandLine.CompletionHandler(reporter.CommandLineToolCompletion), workingDirectory, envVars, new CommandLine.IOHandler(reporter.AggregateLine));
 }