public ScriptRelayCommand(IScriptCommand command, IParameterDicConverter converter, IScriptRunner scriptRunner) : base( pm => { scriptRunner.RunAsync(converter.Convert(pm), command); }, pm => command.CanExecute(converter.Convert(pm))) { }
public static Task RunScriptAsync(ParameterDic initialParameters, bool cloneParameters, params IScriptCommand[] commands) { if (cloneParameters) { initialParameters = initialParameters.Clone(); } IScriptRunner runner = initialParameters.GetValue <IScriptRunner>("{ScriptRunner}", Instance); return(runner.RunAsync(new Queue <IScriptCommand>(commands), initialParameters)); }
public bool Poll() { if (detach_state_) { return(false); } if ((!detach_req_) && (GetDetachStatus())) { detach_req_ = true; runner_.StopAsync(); } if ((!detach_req_) && (!runner_.IsRunning)) { if (mode_ == ScriptRunMode.Repeat) { runner_.RunAsync(); } } if ((detach_req_) && (!detach_state_)) { detach_state_ = !runner_.IsRunning; } /* 状態更新 */ var update_state = false; var status_new = GetRunnerStatus(); if (status_ != status_new) { status_ = status_new; update_state = true; } return(update_state); }
public static async Task RunAsync(this IScriptRunner scriptRunner, ParameterDic initialParameters, params IScriptCommand[] cmds) { await scriptRunner.RunAsync(new Queue <IScriptCommand>(cmds), initialParameters); }
/// <summary> /// Execute an Explorer command. /// </summary> /// <param name="command"></param> /// <param name="parameterDic"></param> /// <param name="scriptRunner"></param> /// <returns></returns> public static async Task ExecuteAsync(this ICommandManager commandManager, IScriptCommand[] commands, ParameterDic parameterDic = null, IScriptRunner scriptRunner = null) { scriptRunner = scriptRunner ?? new ScriptRunner(); await scriptRunner.RunAsync(commandManager.ParameterDicConverter.ConvertAndMerge(parameterDic), commands); }