博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThreadPool
阅读量:4344 次
发布时间:2019-06-07

本文共 3180 字,大约阅读时间需要 10 分钟。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Windows.Forms;using WindowsFormsApplication3.Enums;using WindowsFormsApplication3.DataStorge;using WindowsFormsApplication3.Jobs;using WindowsFormsApplication3.Jobs.Operation_System;namespace WindowsFormsApplication3.FormPage{    public partial class ThreadPoolTest : BaseWorkerForm    {        protected int finishedChildFormNO;        protected CheckoutStep checkoutStep;        void execute_StateChangeEvent(string strTipInfo, int Number, bool IsEnd)        {                     if (this.InvokeRequired)            {                this.BeginInvoke(new ExeCuteManager.DelArgInfo(DelPolfun), new object[] { strTipInfo, Number, IsEnd });            }            else            {                DelPolfun(strTipInfo, Number, IsEnd);            }        }        private void DelPolfun(string strTipInfo, int Number, bool IsEnd)        {            this.listBox.Items.Add(strTipInfo);            if (Number == 3 && IsEnd)            {                this.listBox.Items.Add(string.Format("所有的线程执行结束!"));            }        }        public ThreadPoolTest(CheckoutContext checkoutContext, CheckoutStep checkoutStep)            : base(checkoutContext, checkoutStep)        {            this.checkoutStep = checkoutStep;            InitializeComponent();            ResetForm();            backgroundWorker.DoWork += backgroundWorker_DoWork;            backgroundWorker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted;        }        private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)        {            bool isErrorFound = false;             foreach (BaseJob job in jobs)            {                job.StateChangeEvent += execute_StateChangeEvent;                WaitCallback callBack = new WaitCallback(job.Execute);                ThreadPool.QueueUserWorkItem(callBack, 1);                ThreadPool.QueueUserWorkItem(callBack, 2);                ThreadPool.QueueUserWorkItem(callBack, 3);                if (job.Status == JobStatus.Error)                {                    isErrorFound = true;                    checkoutContext.logData.Error(checkoutStep, "Job error");                }                status = isErrorFound ? FormStatus.Error : FormStatus.OK;                ReportStatusChanged();            }        }        private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)        {            timer.Stop();            timer.Enabled = false;            RefreshForm();            ReportStatusChanged();            checkoutContext.logData.Finish(checkoutStep, "");        }        public override void Execute()        {            ReportStatusChanged();            checkoutContext.logData.Start(checkoutStep, "");            base.Execute();            backgroundWorker.RunWorkerAsync();        }        public override void ResetForm()        {            base.ResetForm();            jobs.Add(new ExeCuteManager(checkoutContext,checkoutStep));        }    }}

转载于:https://www.cnblogs.com/rosizel/p/3857311.html

你可能感兴趣的文章
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>
阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
查看>>
阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
查看>>
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>