首页 > 代码库 > OperationSystemForm : BaseWorkerForm

OperationSystemForm : BaseWorkerForm

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 OperationSystemForm : BaseWorkerForm    {        protected int finishedChildFormNO;        protected CheckoutStep checkoutStep;        public void StateChangeEvent()        {           // RefreshForm();        }        public bool identityByState(JobStatus jobStatus) {            bool flag = true;            foreach (BaseJob childjob in jobs)            {                if (childjob.Status != jobStatus)                {                    flag = false;                    break;                }            }            return flag;        }        public OperationSystemForm(CheckoutContext checkoutContext,CheckoutStep checkoutStep):base(checkoutContext,checkoutStep)        {            this.checkoutStep = checkoutStep;            InitializeComponent();            timer.Tick += new EventHandler(timer_Tick);            ResetForm();        }        private void SetFormStatus() {            foreach (BaseJob childj in jobs)            {                switch (childj.Status)                {                    case (JobStatus.Error):                        this.status = FormStatus.Error;                        break;                    case (JobStatus.OK):                        this.status = identityByState(JobStatus.OK) ? FormStatus.OK : status;                        break;                    case (JobStatus.Waiting):                        this.status = identityByState(JobStatus.Waiting) ? FormStatus.Waiting : status;                        break;                    default:                        break;                }            }        }        public override void Execute(object obj)        {            base.Execute(obj);            ReportFormStatusChanged();            foreach (BaseJob job in jobs)            {                job.JobStateChangeEvent += StateChangeEvent;                ThreadPool.QueueUserWorkItem(new WaitCallback(job.Execute),null);            }            checkoutContext.logData.Start(checkoutStep, "");        }        public override void ResetForm()        {            base.ResetForm();            jobs.Add(new Job1(checkoutContext,checkoutStep));            jobs.Add(new Job2(checkoutContext, checkoutStep));        }        public override void RefreshForm()        {            base.RefreshForm();            SetFormStatus();            if(checkoutContext.messageList!=null)            {                if (listBox.Items.Count != 0)                    listBox.Items.Clear();                foreach (string m in checkoutContext.messageList)                    listBox.Items.Add(m);            }        }        private void timer_Tick(object sender, EventArgs e){            RefreshForm();        }    }}