/// <summary> /// Добавление задания для отслеживания /// </summary> /// <param name="processName">Название процесса, приложения</param> /// <param name="memScale">Еденица измерения памяти</param> /// <returns>Данные по заданию</returns> private async Task <AppRamDataResult> CreateAppWatch(string processName, MemoryScale memScale) { var app = await GetCurrentProcessMemory(processName); app.MemorySc = memScale; app.LastDataGave = DateTime.Now; while (!_internalToken.Token.IsCancellationRequested && !_db.TryAdd(processName, app)) { await Task.Delay(100).ConfigureAwait(false); } return(new AppRamDataResult() { ProcessName = app.ProcessName, ProcTime = app.ValueTime, Scale = memScale.GetDescription(), Value = app.ValueToStringResult() }); }
/// <summary> /// Получение информации о существующем приложении /// </summary> /// <param name="processName">Название приложения</param> /// <param name="memScale">Еденица измерения памяти</param> /// <returns></returns> private async Task <AppRamDataResult> GetProcessData(string processName, MemoryScale memScale) { while (!_internalToken.Token.IsCancellationRequested) { if (_db.TryGetValue(processName, out var app)) { app.MemorySc = memScale; app.LastDataGave = DateTime.Now; return(new AppRamDataResult() { ProcessName = app.ProcessName, ProcTime = app.ValueTime, Scale = memScale.GetDescription(), Value = app.ValueToStringResult() }); } await Task.Delay(100).ConfigureAwait(false); } throw new Exception($"Информация о приложении {processName} не получена, процесс отменен"); }