public bool EnqueueSoT(string workingDirectory, string projectDirectory) { JobServer manager; SoT sot = CreateSoT(out manager, projectDirectory); sot.WorkingDirectory = workingDirectory; sotsToAdd.Enqueue(new KeyValuePair <JobServer, SoT>(manager, sot)); return(true); }
public override void AddSoT(SoT sot) { if (SoTs == null) { SoTs = new List <SoT>(); } SoTs.Add(sot); handlersAdded.WaitOne(); SoTAdded?.Invoke((SoTImpl)sot); }
private void SoTAddedHandler(SoT sot_) { SoTImpl sot = (SoTImpl)sot_; Trace.TraceInformation("SoT added."); lock (this) { if (SoTWorkerThread == null) { SoTWorkerThread = new System.Threading.Thread( delegate() { while (true) { Action action = SoTTodo.Take(); if (action == null) { return; } else { action.Invoke(); } } } ); SoTWorkerThread.SetApartmentState(System.Threading.ApartmentState.STA); SoTWorkerThread.Start(); SoTWorkerThread.Name = "STA thread for SoT.Run"; } sot.SoTTodo = SoTTodo; SoTs.Add(sot); JobsToBeStarted.Add(delegate() { SoTTodo.Add(delegate { sot.Run(); }); }); if (SotAdded != null) { SotAdded(this, new SotAddedEventArgs { Sot = sot }); } } }
public override void AddSoT(SoT sot) { SoTs.Add(sot); }