public ProcessActivitySampler(IUserActivityMonitor userActivityMonitor, IActiveProcessHelper activeProcessHelper) { this.userActivityMonitor = userActivityMonitor; this.activeProcessHelper = activeProcessHelper; UserInactiveAfterNSeconds = DefaultUserInactivityTimeSeconds; activitySampleTimer = new Timer(OnActivitySampleTimer, null, 0, ActivitySamplePeriodMilliSeconds); this.timeSegment = new UserActivityOverPeriod<ProcessInfo>(); TrackingPaused = false; }
public UserActivityOverPeriod<ProcessInfo> StartNewTimeSegment() { // I probably need to lock access to this.timeSegment while we do this. UserActivityOverPeriod<ProcessInfo> oldTimeSegment; lock (lockObject) { oldTimeSegment = this.timeSegment; this.timeSegment = new UserActivityOverPeriod<ProcessInfo>(); } return oldTimeSegment; }
TimeSlice GetTimeSliceFromUserActivitySample(UserActivityOverPeriod<ProcessInfo> userActivity) { var newTimeSlice = new TimeSlice(); var currentTimeSegment = this.timeSegmentProvider.CurrentTimeSegment; newTimeSlice.Date = this.timeSegmentProvider.CurrentTimeSegment; if (userActivity.IsActiveSegment) { newTimeSlice.PrimaryProcess = userActivity.PrimaryActivityInSegment.Name; newTimeSlice.PrimaryWindowTitle = userActivity.PrimaryActivityInSegment.WindowTitle; newTimeSlice.PrimaryActivityDuration = userActivity.SecondsInPrimarySegment; } else { newTimeSlice.PrimaryActivityDuration = null; newTimeSlice.PrimaryProcess = null; newTimeSlice.PrimaryWindowTitle = null; } return newTimeSlice; }
public UserActivitySampleEventArgs(UserActivityOverPeriod<ProcessInfo> processActivity) { this.ProcessActivity = processActivity; }