private void ScanWinSessionsToRecordOrEnd(object state) { int[] winSessions = WTSEngine.GetActiveSessions(); var rcdProcesses = GetRcordingProcesses(); // if not recording, record it. foreach (int sid in winSessions) { if (Array.Find(rcdProcesses, p => p.SessionId == sid) == null) { string user = WTSEngine.GetDomainUserBySessionId(sid); if (UserPolicy.IsUserRecording(user)) { TraceLogger.Instance.WriteLineInfo("Start recording by configuration. user: "******"Stop recording by configuration. user: "******"Kill recording agent because double process. sessionId: " + proc.SessionId); try { proc.Kill(); } catch (Exception) { } } else { sessions.Add(proc.SessionId); } } // dispose Array.ForEach(rcdProcesses, p => p.Dispose()); }