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(CheckoutStep cStep,JobStatus jobstatus)
{
if(cStep==this.checkoutStep)
{
switch (jobstatus)
{
case JobStatus.Error:
status = FormStatus.Error;
ReportFormStatusChanged();
break;
case JobStatus.OK:
foreach (BaseJob job in jobs)
{
if (job.Status == JobStatus.OK)
status = FormStatus.OK;
checkoutContext.logData.Finish(checkoutStep, "");
}
break;
default:
break;
}
}
RefreshForm();
}
public OperationSystemForm(CheckoutContext checkoutContext,CheckoutStep checkoutStep):base(checkoutContext,checkoutStep)
{
this.checkoutStep = checkoutStep;
InitializeComponent();
ResetForm();
}
public override void Execute()
{
base.Execute();
ReportFormStatusChanged();
int i = 0;
foreach (BaseJob job in jobs)
{
job.JobStateChangeEvent += StateChangeEvent;
ThreadPool.QueueUserWorkItem(new WaitCallback(job.Execute),i);
i++;
}
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();
if(checkoutContext.messageList!=null)
{
foreach (string m in checkoutContext.messageList)
this.listBox.Items.Add(m);
}
}
}
}