public async Task Enter(WMonitorAlghorithm alghorithm, StateMachine <Triggers, States> sm) { InProgress = true; _cts = new CancellationTokenSource(); alghorithm._workTimeEventService.TryStartWatchingScreen(); alghorithm._canCapureMouseKeyboard = true; int timeMs = GetRandomDelay(); Log.Logger.Debug($"Starting state 5 delay {timeMs}"); try { await Task.Delay(timeMs, _cts.Token); } catch (TaskCanceledException) { InProgress = false; return; } alghorithm._workTimeEventService.TryAddWatchingScreen(); InProgress = false; Log.Logger.Debug("State 5 face compare timeout"); sm.Next(WMonitorAlghorithm.Triggers.FaceNotRecog); }
public async Task Enter(StateMachine <Triggers, States> sm, WorkTime workTime, WMonitorAlghorithm alghorithm) { InProgress = true; _cts = new CancellationTokenSource(); alghorithm._canCapureMouseKeyboard = true; bool faceDetected = false; bool faceRecognized = false; while (!faceRecognized || !faceDetected) { _workTimeEventService.StartTempChanges(); _workTimeEventService.TryStartWatchingScreen(); _workTimeEventService.StartRecognitionFailure(); Log.Logger.Debug($"Starting {_config.Delay} state 3 delay"); try { await Task.Delay(_config.Delay, _cts.Token); } catch (TaskCanceledException) { InProgress = false; return; } (faceDetected, faceRecognized) = await _faceRecognition.RecognizeFace(workTime.User); alghorithm.State3Result((faceDetected, faceRecognized)); Log.Logger.Debug( $"State 3 face recognized: {faceRecognized} face detected face recognized: {faceDetected}"); if (!faceRecognized || !faceDetected) { _workTimeEventService.DiscardTempChanges(); if (!TryAddRecognitionFailure(faceDetected, faceRecognized)) { InProgress = false; sm.Next(Triggers.Stop); return; } } else { _workTimeEventService.TryAddWatchingScreen(); _workTimeEventService.StopRecognitionFailure(); _workTimeEventService.CommitTempChanges(); } } InProgress = false; sm.Next(Triggers.FaceRecog); }