C#多线程任务的批量建立、管理和废弃

由于后台任务需要是static类型方法,所以需要的参数只能通过object类型进行封装

本测试中使用一个模型来封装参数(PModel)

        public string FileName { get; set; }
        public int IdNum { get; set; }
        public List<ManGruopModel> Gps = new List<ManGruopModel>();

包含一个文件名、以及用来标识线程的识别号,和一组数据

需要在主类中建立一个线程类型的泛型集合用来作为线程的容器

List<Thread> TList = new List<Thread>();//线程集合

用for循环向容器中注入方法实体

            for (int i = 0; i < TNum; i++)
            {
                Thread T = new Thread(new ParameterizedThreadStart(OutPutData));//建立新线程
                TList.Add(T);
            }

(方法原型)

        private void OutPutData(object ObjFile)
        {
            PModel Pm = (PModel)ObjFile;
            string CurPath = Path.GetDirectoryName(Pm.FileName);//获取文件夹路径
            OutPut(Pm.Gps,Pm.FileName,Pm.IdNum);
            MessageBox.Show("写入完成");
            TList[Pm.IdNum].Abort();//任务结束,终止线程
            //thread.Abort();//终止线程
        }

然后在用一个for循环向其中注入参数(其实两个for可以合并为一个)

            for (int i = 0; i < TNum; i++)
            {
                PModel Pm = new PModel(ObjFile.FileName, MgpList[i], i);//参数传入
                TList[i].Start((object)Pm);
            }

需要管理某个线程的时候就可以通过遍历线程集合(线程池),通过线程的识别编号来操纵线程

TList[Pm.IdNum].Abort();//任务结束,终止线程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值