RunningServiceHandle OnStart(CloudService service) { var process = Process.GetCurrentProcess(); var handle = new RunningServiceHandle { Service = service, TotalProcessorTime = process.TotalProcessorTime, UserProcessorTime = process.UserProcessorTime, StartDate = DateTimeOffset.UtcNow }; return handle; }
void OnStop(RunningServiceHandle handle) { var timestamp = DateTimeOffset.UtcNow; var process = Process.GetCurrentProcess(); var serviceName = handle.Service.Name; var totalCpuTime = process.TotalProcessorTime - handle.TotalProcessorTime; var userCpuTime = process.UserProcessorTime - handle.UserProcessorTime; var absoluteTime = timestamp - handle.StartDate; lock (_updatesSync) { _updates.Add(new ServiceStatisticUpdate { TimeSegment = TimeSegments.Day(timestamp), ServiceName = serviceName, TimeStamp = timestamp, TotalCpuTime = totalCpuTime, UserCpuTime = userCpuTime, AbsoluteTime = absoluteTime, MaxAbsoluteTime = absoluteTime, Count = 1 }); _updates.Add(new ServiceStatisticUpdate { TimeSegment = TimeSegments.Month(timestamp), ServiceName = serviceName, TimeStamp = timestamp, TotalCpuTime = totalCpuTime, UserCpuTime = userCpuTime, AbsoluteTime = absoluteTime, MaxAbsoluteTime = absoluteTime, Count = 1 }); } }