コード例 #1
0
        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;
            });
        }
コード例 #2
0
        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));
        }