用户登录
用户注册

分享至

c# Task启动多个线程,每个线程启动一个cmd程序,然后执行cmd命令

  • 作者: 风吹内裤JB凉
  • 来源: 51数据库
  • 2021-07-28

问题描述:接口访问启动多个cmd再执行命令,每个cmd命令一直在运行的

例如:ping 192.168.1.122 -t
1、Task的简单使用

Task task1=Task.Run(() => openCmd();//openCmd是需要运行的方法

2、解决一直访问接口,一直开启新线程,
(1)定义固定数量的线程

        public static Task task1;
        public static Task task2;
        public static Task task3;
        public static Task[] taskT=new Task[] {task1,task2, task3};

(2)循环访问开启线程,判断是否第一次执行,如果是就开启线程,否就判断线程是否执行完成,如果完成就再次开启这个线程

 for (int i = 0; i < 3; i++)
                {
                    int ip = i + 2;
                    string inputstr = "cmd.exe";
                    string strffpeg="ping 192.168.1.122 -t";
                    //判断是否第一次启动
                    if (taskT[i] != null)
                    {
                        //判读线程是否完成,或者等于null//完成就重新启动
                        if (taskT[i].Status == TaskStatus.RanToCompletion)
                        {
                            taskT[i] = Task.Run(() => OpenCMD(inputstr, strffpeg));
                        }
                    }
                    else
                    {
                        taskT[i] = Task.Run(() => OpenCMD(inputstr, strffpeg));
                    }
                }

3、openCmd
参考:https://blog.csdn.net/chunTF/article/details/103866368?utm_medium=distribute.pc_relevant_bbs_down.none-task–2allfirst_rank_v2rank_v29-5.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task–2allfirst_rank_v2rank_v29-5.nonecase

软件
前端设计
程序设计
Java相关