public void CloseProcess(Models.ProcessTree selectedProcess) { Process currentProcess = Process.GetProcessById(selectedProcess.ProcessId); currentProcess.Kill(); RemoveSelectedItem(selectedProcess); }
private void FindInChild(Models.ProcessTree selectedProcess, ICollection <Models.ProcessTree> child) { foreach (Models.ProcessTree process in child) { if (process == selectedProcess) { child.Remove(process); break; } else if (process.ChildTree.Count > 0) { FindInChild(selectedProcess, process.ChildTree); } } }
public void CreateTree() { GetProcessesList(); var orderedProcessesByParrentId = allProcesses.OrderBy(node => node.ParrentId).ToArray(); for (int i = 0; i < orderedProcessesByParrentId.Length; ++i) { Models.ProcessTree parent = FindInTree(orderedProcessesByParrentId[i].ParrentId); if ((orderedProcessesByParrentId[i].ParrentId == 0 && orderedProcessesByParrentId[i].ProcessId == 0) || parent == null) { processTrees.Add(orderedProcessesByParrentId[i]); } else { parent.ChildTree.Add(orderedProcessesByParrentId[i]); } } }
private Models.ProcessTree FindInTree(int id) { Models.ProcessTree finded = null; foreach (Models.ProcessTree node in allProcesses) { if (node.ProcessId.Equals(id)) { finded = node; break; } else if (node.ChildTree.Count != 0) { finded = FindInNode(node, id); if (finded != null) { break; } } } return(finded); }
private Models.ProcessTree FindInNode(Models.ProcessTree node, int id) { Models.ProcessTree finded = null; foreach (Models.ProcessTree child in node.ChildTree) { if (child.ProcessId.Equals(id)) { finded = child; break; } else if (child.ChildTree.Count != 0) { finded = FindInNode(child, id); if (finded != null) { break; } } } return(finded); }
private void RemoveSelectedItem(Models.ProcessTree selectedProcess) { var deleted = false; foreach (Models.ProcessTree process in processTrees) { if (process == selectedProcess) { processTrees.Remove(process); deleted = true; break; } } if (!deleted) { foreach (Models.ProcessTree process in processTrees) { if (process.ChildTree.Count > 0) { FindInChild(selectedProcess, process.ChildTree); } } } }