private void SampleNow() { using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { _db = new ImageServerDBDataContext(); foreach (var processorId in GetActiveProcessorIds()) { var studyStorages = GetStudiesProcessed(processorId); var sopCount = Enumerable.Sum(studyStorages, guid => GetStudySopCount(guid)); var sample = new WorkQueueProcessingSample() { Processor = processorId, TotalSOProcessed = sopCount }; var lastSample = GetPreviousSample(processorId); sample.Speed = lastSample == null ? 0 : (sample.TotalSOProcessed - lastSample.TotalSOProcessed) / (sample.Timestamp - lastSample.Timestamp).TotalSeconds; AddSample(sample); } scope.Dispose(); } }
private void AddSample(WorkQueueProcessingSample sample) { lock (_samples) { List <WorkQueueProcessingSample> list; if (!_samples.TryGetValue(sample.Processor, out list)) { list = new List <WorkQueueProcessingSample>(); _samples.Add(sample.Processor, list); } list.Add(sample); } EventsHelper.Fire(SampleTaken, this, new SampleTakenEventArgs() { WorkQueueProcessingSample = sample }); }
private void SampleNow() { using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { _db = new ImageServerDBDataContext(); foreach (var processorId in GetActiveProcessorIds()) { var studyStorages = GetStudiesProcessed(processorId); var sopCount = Enumerable.Sum(studyStorages, guid => GetStudySopCount(guid)); var sample = new WorkQueueProcessingSample() { Processor=processorId, TotalSOProcessed = sopCount }; var lastSample = GetPreviousSample(processorId); sample.Speed = lastSample == null ? 0 : (sample.TotalSOProcessed - lastSample.TotalSOProcessed)/(sample.Timestamp - lastSample.Timestamp).TotalSeconds; AddSample(sample); } scope.Dispose(); } }
void DrawSample(WorkQueueProcessingSample sample) { this._processingSpeedChart.Series[0].Points.AddXY(sample.Timestamp.ToOADate(), sample.Speed); }
private void AddSample(WorkQueueProcessingSample sample) { lock (_samples) { List<WorkQueueProcessingSample> list; if (!_samples.TryGetValue(sample.Processor, out list)) { list = new List<WorkQueueProcessingSample>(); _samples.Add(sample.Processor, list); } list.Add(sample); } EventsHelper.Fire(SampleTaken, this, new SampleTakenEventArgs() { WorkQueueProcessingSample = sample }); }