Example #1
0
 /// <summary>Initializes a new instance of the <see cref="Namespace"/> class.</summary>
 /// <param name="assembly">The assembly.</param>
 /// <param name="name">The name of the namespace.</param>
 public Namespace(AssemblyItem assembly, string name)
 {
     this.Parent = assembly;
     this.Name = name;
     this.types = new List<Type>();
 }
Example #2
0
        public TreeNode LoadAssembly(Assembly asm, CancellationToken cancelToken)
        {
            AssemblyItem asmItem = new AssemblyItem(asm);

            bool first = this.Nodes.Count == 0;

            TreeNode node = this.FindNode((n) =>
            {
                return n.Node.GetInfo() != null && n.Node.GetInfo().GetAnalysisObject<AssemblyItem>() == asmItem;
            }, 2);

            if (node != null)
            {
                return node;
            }

            node = this.NewNode(asmItem, NodeType.Assembly, false);

            Action<CancellationToken> addNodes = (ct) =>
            {
                TreeNode[] nodes = this.CreateSubNodes(node.GetInfo(), ct);
                if (!ct.IsCancellationRequested)
                {
                    Action add = () =>
                    {
                        node.Nodes.AddRange(nodes);
                        node.Expand();
                    };

                    if (node.TreeView != null)
                    {
                        node.TreeView.InvokeIfRequired(add);
                    }
                    else
                    {
                        add();
                    }
                }
            };

            if (JobGroup.Current != Job.Analysis)
            {
                Job.Analysis.NewJob(this, addNodes)
                    .Execute()
                    .Wait();
            }
            else
            {
                addNodes(cancelToken);
            }

            return node;
        }