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); } } }
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(); }