Пример #1
0
 public override void Start(ISubJob newJob)
 {
     base.Start(newJob);
     RecordReader.OpenReader();
     RecordWriter.OpenWriterAsync();
     RecordReader.StartReadAsync();
 }
Пример #2
0
        public Job(IEnumerable <ISyncElement> syncElements)
        {
            Status            = JobStatus.OnQueue;
            SyncElementsStack = new List <ISyncElement>(syncElements);
            SubJobs           = new List <ISubJob>();

            foreach (ISyncElement syncElement in SyncElementsStack)
            {
                SubJobs.Add(new SubJob(syncElement));
            }

            foreach (ISubJob subJob in SubJobs)
            {
                subJob.OnCompleted += OnSubJobCompleted;

                foreach (ISyncElement dependency in subJob.TargetElement.Dependencies)
                {
                    ISubJob dependencyJob = SubJobs.FirstOrDefault(sjb => sjb.TargetElement == dependency);
                    if (dependencyJob != null)
                    {
                        subJob.Dependencies.Add(dependencyJob);
                    }
                }
            }
        }
Пример #3
0
 protected virtual void OpenJob(ISubJob newJob)
 {
     if (CurrentJob != null)
     {
         throw new InvalidOperationException("Another Job is already open");
     }
     CurrentJob = newJob;
 }
Пример #4
0
        protected virtual void OpenJob(ISubJob newJob)
        {
            CurrentJob = newJob;

            try
            {
                LoadResources();
                CheckResourcesLoaded();
            }
            catch
            {
                throw new Exception("Failed Loading Resources");
            }
        }
Пример #5
0
        public override void Start(ISubJob newJob)
        {
            base.Start(newJob);
            List <Order> trialRecords = SSMDData.RunQuery(new Query <Order, SSMDContext>()).Where(ord => ord.OrderType[0] == 'Z').ToList();
            IDictionary <int, WorkPhaseLabData> workPhaseDataIndex = SSMDData.RunQuery(new Query <WorkPhaseLabData, SSMDContext>()).ToDictionary(wpld => wpld.OrderNumber, wpld => wpld);

            List <WorkPhaseLabData> newTrials = new List <WorkPhaseLabData>();

            foreach (Order trial in trialRecords)
            {
                if (!workPhaseDataIndex.ContainsKey(trial.Number))
                {
                    newTrials.Add(new WorkPhaseLabData()
                    {
                        OrderNumber = trial.Number
                    });
                }
            }

            SSMDData.Execute(new InsertEntitiesCommand <SSMDContext>(newTrials));
        }
Пример #6
0
        private void ScheduleTask(ISubJob task)
        {
            if (System.Threading.Thread.CurrentThread == AsyncSystem.MainThread)
            {
                var pairing = new Tuple <ISubJob, AsyncSystem>(task, this);

                var gcHandle = GCHandle.Alloc(pairing);

                this.gcHandles.Add(gcHandle);

                var job = new Job()
                {
                    handle = gcHandle
                };

                // We remember the JobHandle so we can complete it later
                this.jobHandles.Add(job.Schedule());
            }
            else
            {
                newTasks.Enqueue(task);
            }
        }
Пример #7
0
 public SubJobViewModel(ISubJob subJob)
 {
     SubJob = subJob;
     SubJob.StatusChanged += OnStatusChanged;
 }
Пример #8
0
 public virtual async void StartAsync(ISubJob newJob)
 {
     await Task.Run(() => Start(newJob));
 }
Пример #9
0
 public virtual void Start(ISubJob newJob)
 {
     OpenJob(newJob);
 }
Пример #10
0
 public virtual void Execute(ISubJob newJob)
 {
     OpenJob(newJob);
 }
Пример #11
0
 public override void Execute(ISubJob newJob)
 {
     base.Execute(newJob);
     OperationEnumerator = Operations.GetEnumerator();
     StartNextOperation();
 }