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;
        }
예제 #3
0
        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;
 }