private async Task UpdateProcessData()
        {
            IEnumerable <IProcessData> resultProcessData = await ProcessInfoProvider.GetProcessInfo();

            IProcessData[] currentProcessData = resultProcessData.ToArray();

            List <IProcessData> toRemove = new List <IProcessData>();

            foreach (IProcessData vmProcess in ProcessData)
            {
                if (!currentProcessData.Any(b => Math.Abs(b.ID - vmProcess.ID) < 0.01) ||
                    !FilteredTasksHost.IsProcessFiltered(vmProcess.Name))
                {
                    toRemove.Add(vmProcess);
                }
            }

            foreach (IProcessData removeAbleItem in toRemove)
            {
                ProcessData.Remove(removeAbleItem);
            }

            foreach (IProcessData processData in currentProcessData)
            {
                if (!ProcessData.Any(b => Math.Abs(b.ID - processData.ID) < 0.01) &&
                    FilteredTasksHost.IsProcessFiltered(processData.Name))
                {
                    ProcessData.Add(processData);
                }
            }
        }
Ejemplo n.º 2
0
        public virtual async Task Update()
        {
            IEnumerable <IProcessData> currentProcessData = await ProcessInfoProvider.GetProcessInfo();

            IProcessData[] processDatas = currentProcessData as IProcessData[] ?? currentProcessData.ToArray();
            foreach (IProcessData vmProcess in ProcessData)
            {
                if (!processDatas.Any(b => Math.Abs(b.ID - vmProcess.ID) < 0.01))
                {
                    ProcessData.Remove(vmProcess);
                }
            }

            foreach (IProcessData processData in processDatas)
            {
                if (!ProcessData.Any(b => Math.Abs(b.ID - processData.ID) < 0.01))
                {
                    ProcessData.Add(processData);
                }
            }

            Refresh();
        }