public static void WalkTheTree(TreeNode root, TreeNodeOperation WriteSectionToConsole, ref Timer timer, ref ManualResetEvent _eventMainMenu, CancellationToken token) { Queue <TreeNode> queue = new Queue <TreeNode>(); queue.Enqueue(root); while (queue.Count != 0) { TreeNode temp = queue.Dequeue(); WriteSectionToConsole(temp); if (token.IsCancellationRequested) { Console.WriteLine(ConsoleMenuConstant.TimeIsOver); _eventMainMenu.Set(); return; } if (temp.ChildNodes == null) { continue; } foreach (var node in temp.ChildNodes) { queue.Enqueue(node); } } timer.Dispose(); _eventMainMenu.Set(); }
public async void StartTimer(TreeNode test, TreeNodeOperation WriteSectionToConsole, ManualResetEvent _eventMainMenu) { cts = new CancellationTokenSource(); token = cts.Token; startTest = DateTime.Now; tm = new TimerCallback(Time); timer = new Timer(tm, null, 0, 1000); await Task.Run(() => TreeNode.WalkTheTree(test, WriteSectionToConsole, ref timer, ref _eventMainMenu, token)); }
public static void WalkTheTree(TreeNode root, TreeNodeOperation operation) { Queue <TreeNode> queue = new Queue <TreeNode>(); queue.Enqueue(root); while (queue.Count != 0) { TreeNode temp = queue.Dequeue(); operation(temp); if (temp.ChildNodes == null) { continue; } foreach (var node in temp.ChildNodes) { queue.Enqueue(node); } } }
private void InitNodeOperations() { this.m_NodeOperations = new List<ITreeNodeOperation>(); TreeNodeOperation item = new TreeNodeOperation(); item.IconList = new ImageList(); item.IconList.Images.Add(LTEPredictionResource.PREDICTION_ROOT, Resource.folder); item.IconList.Images.Add("Lock", Resource.Lock); item.IconList.Images.Add("Unlock", Resource.Unlock); item.IconList.Images.Add("Study", Resource.Study); item.SubSysNode = new TreeNode(LTEPredictionResource.PREDICTION_ROOT); item.SubSysNode.Name = LTEPredictionResource.PREDICTION_ROOT; item.SubSysNode.ImageKey = LTEPredictionResource.PREDICTION_ROOT; item.SubSysNode.SelectedImageKey = LTEPredictionResource.PREDICTION_ROOT; item.SubSysNode.StateImageIndex = 2; item.LabelEditHandle = new TreeNodeOperation.PredictionLabelEdit(this.HandleLabelEdit); item.NodeCheckHandle = new TreeNodeOperation.PredictionNodeCheck(this.HandleNodeCheck); item.NodeClickHandle = new TreeNodeOperation.PredictionNodeClick(this.HandleNodeClick); this.m_NodeOperations.Add(item); }