Changeset 35 for trunk/sources/HeuristicLab.Grid/ClientForm.cs
- Timestamp:
- 03/01/08 16:19:11 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Grid/ClientForm.cs
r34 r35 46 46 private ProcessingEngine currentEngine; 47 47 private string clientUrl; 48 private object locker = new object(); 48 49 49 50 public ClientForm() { … … 96 97 97 98 private void fetchOperationTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { 98 byte[] engineXml; 99 fetchOperationTimer.Stop(); 100 if (engineStore.TryTakeEngine(clientUrl, out currentGuid, out engineXml)) { 101 currentEngine = RestoreEngine(engineXml); 102 if (InvokeRequired) { Invoke((MethodInvoker)delegate() { statusTextBox.Text = "Executing engine"; }); } else statusTextBox.Text = "Executing engine"; 103 currentEngine.Finished += delegate(object src, EventArgs args) { 104 byte[] resultXml = SaveEngine(currentEngine); 105 engineStore.StoreResult(currentGuid, resultXml); 106 currentGuid = Guid.Empty; 107 currentEngine = null; 108 fetchOperationTimer.Interval = 100; 99 lock(locker) { 100 byte[] engineXml; 101 fetchOperationTimer.Stop(); 102 if(engineStore.TryTakeEngine(clientUrl, out currentGuid, out engineXml)) { 103 currentEngine = RestoreEngine(engineXml); 104 if(InvokeRequired) { Invoke((MethodInvoker)delegate() { statusTextBox.Text = "Executing engine"; }); } else statusTextBox.Text = "Executing engine"; 105 currentEngine.Finished += delegate(object src, EventArgs args) { 106 byte[] resultXml = SaveEngine(currentEngine); 107 engineStore.StoreResult(currentGuid, resultXml); 108 currentGuid = Guid.Empty; 109 currentEngine = null; 110 fetchOperationTimer.Interval = 100; 111 fetchOperationTimer.Start(); 112 }; 113 currentEngine.Execute(); 114 } else { 115 if(InvokeRequired) { Invoke((MethodInvoker)delegate() { statusTextBox.Text = "Waiting for engine"; }); } else statusTextBox.Text = "Waiting for engine"; 116 fetchOperationTimer.Interval = 5000; 109 117 fetchOperationTimer.Start(); 110 }; 111 currentEngine.Execute(); 112 } else { 113 if(InvokeRequired) { Invoke((MethodInvoker)delegate() { statusTextBox.Text = "Waiting for engine"; }); } else statusTextBox.Text = "Waiting for engine"; 114 fetchOperationTimer.Interval = 5000; 115 fetchOperationTimer.Start(); 118 } 116 119 } 117 120 } 118 121 public void Abort(Guid guid) { 119 if(!IsRunningEngine(guid)) return; 120 currentEngine.Abort(); 122 lock(locker) { 123 if(!IsRunningEngine(guid)) return; 124 currentEngine.Abort(); 125 } 121 126 } 122 127 public bool IsRunningEngine(Guid guid) {
Note: See TracChangeset
for help on using the changeset viewer.