void ExecuteShellOnNodes() { OpResult = string.Empty; CanExec = false; var tasks = new List <Task <string> >(); string[] cmds = inputcmd.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); if (isSeqMode) { foreach (var machine in from m in NodeMgr.Machines where m.IsSelected && m.Alive == NodeState.Online select m) { tasks.Add(TxMgr.StartCmdInSeqTransaction(machine, cmds)); } } else { foreach (var machine in from m in NodeMgr.Machines where m.IsSelected && m.Alive == NodeState.Online select m) { tasks.AddRange(TxMgr.StartCmdInParallelTransaction(machine, cmds)); } } var all_job = Task.WhenAll(tasks); all_job.GetAwaiter().OnCompleted(() => { CanExec = true; }); }
private Task ClearEnvOnNodes(GammaTXClearEnv tx_code) { List <Task <string> > tasks = new List <Task <string> >(); foreach (var machine in from m in NodeMgr.Machines where m.IsSelected && m.Alive == NodeState.Online select m) { tasks.Add(TxMgr.StartClearEnvTransaction(machine, tx_code)); } return(Task.WhenAll(tasks)); }