Exemple #1
0
        public MainWindow()
        {
            InitializeComponent();

            for (int i = 0; i < 10; i++)
            {
                IonJob job = new IonJob();
                job.ID               = i;
                job.Name             = i.ToString();
                job.Status           = GeoFun.MultiThread.enumJobStatus.New;
                job.MaxProgressValue = 100;
                job.ProgressValue    = i * 5;
                job.Log              = i.ToString();

                JobList.Add(job);
                jobQueue.Enqueue(job);
            }

            dgJobs.ItemsSource = JobList;

            for (int i = 0; i < MaxTaskNum; i++)
            {
                IonWorker ionw = new IonWorker();
                ionw.Code             = i;
                ionw.OnStatusChanged += worker_FinishedJob;
                Worker worker = ionw as Worker;
                worker.Status = enumWorkerStatus.Working;
                workers.Add(ionw);
                worker.Status = enumWorkerStatus.Idle;
            }
        }
Exemple #2
0
        private void worker_FinishedJob(object sender, EventArgs e)
        {
            if (sender is null)
            {
                return;
            }
            IonWorker worker = sender as IonWorker;

            if (worker is null)
            {
                return;
            }
            if (worker.Status == enumWorkerStatus.Working)
            {
                return;
            }

            Job job = ApplyJob();

            worker.MyJob = job as IonJob;

            worker.Work();
        }