public List <ProcessInfo> GetProcessesInfo() { var list = new List <ProcessInfo>(); // lock (ProcessInfoLock) ProcessInfoLock.AcquireReaderLock(LockTimeout); try { list.AddRange(Processes.Select(info => new ProcessInfo { Id = info.Id, UserId = info.UserId, UserName = info.UserName, StartTime = info.StartTime, Duration = DateTime.Now.Subtract(info.StartTime) })); } finally { ProcessInfoLock.ReleaseReaderLock(); } list.ForEach(info => { var user = UserRepo.FindUserInfo(info.UserId); info.OrgName = user != null ? user.OrganizationName : "?"; }); return(list); }
/// <summary> /// Получает сведения о состоянии кэша /// </summary> /// <returns>Строка описания состояния кэша</returns> public string GetCacheInfo() { var taskCount = 0; var sessionProcessCount = 0; ProcessTaskLock.AcquireReaderLock(LockTimeout); try { taskCount = ProcessTasks.Count; } finally { ProcessTaskLock.ReleaseReaderLock(); } ProcessInfoLock.AcquireReaderLock(LockTimeout); try { sessionProcessCount = Processes.Count; } finally { ProcessInfoLock.ReleaseReaderLock(); } return(String.Format( @"Кол-во классов документов: {0}, Кол-во детальных форм: {1}, Кол-во табличных форм: {2}, Кол-во действий: {3}, Кол-во процесов: {4}, Кол-во прав объектов: {5}, Кол-во прав пользователей: {6}, Кол-во списков: {7}, Кол-во пользователей: {8}, Кол-во сведений о пользователях: {9}, Кол-во организаций: {10}, Кол-во документов: {11}, Кол-во сборок: {12}, Кол-во исполняемых задач: {13}, Кол-во исполняемых сессий: {14}", new object[] { DocDefRepository.DocDefCache.Count, FormRepository.DetailFormCache.Count, FormRepository.TableFormCache.Count, WorkflowRepository.ActivityCacheCount, WorkflowRepository.ProcessCacheCount, PermissionRepository.ObjectDefPermissionCache.Count, PermissionRepository.UserPermissionCache.Count, EnumRepository.EnumDefCache.Count, UserRepository.UserAccountCount, UserRepository.UserInfoCache.Count, OrgRepository.OrgInfoCache.Count, DocRepository.DocCache.Count, ScriptManager.ScriptCache.Count, taskCount, sessionProcessCount } )); }