public void Phase2(IProgresser progresser, ModuleDefinition mod)
            {
                Queue <TypeDefinition> q = new Queue <TypeDefinition>();

                excludes = new List <int>();
                excludes.Add((int)mod.GetType("<Module>").GetStaticConstructor().MetadataToken.RID - 1);
                q.Enqueue(root);
                if (ObfuscationHelper.StringGen != null)
                {
                    foreach (var di in ObfuscationHelper.StringGen.DynGen.Dynamics)
                    {
                        //q.Enqueue(di.DelegateType);
                        q.Enqueue(di.Wrapper);
                    }
                }
                while (q.Count != 0)
                {
                    TypeDefinition typeDef = q.Dequeue();
                    foreach (MethodDefinition mtd in typeDef.Methods)
                    {
                        excludes.Add((int)mtd.MetadataToken.RID - 1);
                    }
                    foreach (TypeDefinition t in typeDef.NestedTypes)
                    {
                        q.Enqueue(t);
                    }
                }
            }
            public void Phase2(IProgresser progresser, ModuleDefinition mod)
            {
                List <MethodDefinition> methods = new List <MethodDefinition>();
                Queue <TypeDefinition>  q       = new Queue <TypeDefinition>();

                foreach (var i in mod.Types)
                {
                    q.Enqueue(i);
                }
                while (q.Count != 0)
                {
                    TypeDefinition typeDef = q.Dequeue();
                    foreach (var i in typeDef.NestedTypes)
                    {
                        q.Enqueue(i);
                    }
                    foreach (var i in typeDef.Methods)
                    {
                        if (!excludes.Contains((int)i.MetadataToken.RID - 1))
                        {
                            methods.Add(i);
                        }
                    }
                }

                int total    = methods.Count;
                int interval = 1;

                if (total > 1000)
                {
                    interval = (int)total / 100;
                }
                IEnumerator <MethodDefinition> etor = methods.GetEnumerator();

                etor.MoveNext();
                for (int i = 0; i < methods.Count; i++)
                {
                    bodies.Add((int)methods[i].MetadataToken.RID - 1, methods[i].Body);

                    etor.MoveNext();
                    if (i % interval == 0 || i == methods.Count - 1)
                    {
                        progresser.SetProgress(i + 1, total);
                    }
                }
            }
            public void Phase2(IProgresser progresser, ModuleDefinition mod)
            {
                Queue <TypeDefinition> q = new Queue <TypeDefinition>();

                excludes = new List <int>();
                excludes.Add((int)mod.GetType("<Module>").GetStaticConstructor().MetadataToken.RID - 1);
                q.Enqueue(root);
                while (q.Count != 0)
                {
                    TypeDefinition typeDef = q.Dequeue();
                    foreach (MethodDefinition mtd in typeDef.Methods)
                    {
                        excludes.Add((int)mtd.MetadataToken.RID - 1);
                    }
                    foreach (TypeDefinition t in typeDef.NestedTypes)
                    {
                        q.Enqueue(t);
                    }
                }
            }
Beispiel #4
0
 void IProgressProvider.SetProgresser(IProgresser progresser)
 {
     this.progresser = progresser;
 }
 public void SetProgresser(IProgresser progresser)
 {
     this.progresser = progresser;
 }
 public void Phase2(IProgresser progresser, ModuleDefinition mod)
 {
     Queue<TypeDefinition> q = new Queue<TypeDefinition>();
     excludes = new List<int>();
     excludes.Add((int)mod.GetType("<Module>").GetStaticConstructor().MetadataToken.RID - 1);
     q.Enqueue(root);
     while (q.Count != 0)
     {
         TypeDefinition typeDef = q.Dequeue();
         foreach (MethodDefinition mtd in typeDef.Methods)
             excludes.Add((int)mtd.MetadataToken.RID - 1);
         foreach (TypeDefinition t in typeDef.NestedTypes)
             q.Enqueue(t);
     }
 }
Beispiel #7
0
 public void SetProgresser(IProgresser progresser)
 {
     this.progresser = progresser;
 }
Beispiel #8
0
 void IProgressProvider.SetProgresser(IProgresser progresser)
 {
     this.progresser = progresser;
 }
Beispiel #9
0

        
Beispiel #10
0

        
            public void Phase2(IProgresser progresser, ModuleDefinition mod)
            {
                List<MethodDefinition> methods = new List<MethodDefinition>();
                Queue<TypeDefinition> q = new Queue<TypeDefinition>();
                foreach (var i in mod.Types)
                    q.Enqueue(i);
                while (q.Count != 0)
                {
                    TypeDefinition typeDef = q.Dequeue();
                    foreach (var i in typeDef.NestedTypes)
                        q.Enqueue(i);
                    foreach (var i in typeDef.Methods)
                        if (!excludes.Contains((int)i.MetadataToken.RID - 1))
                            methods.Add(i);
                }

                int total = methods.Count;
                int interval = 1;
                if (total > 1000)
                    interval = (int)total / 100;
                IEnumerator<MethodDefinition> etor = methods.GetEnumerator();
                etor.MoveNext();
                for (int i = 0; i < methods.Count; i++)
                {
                    bodies.Add((int)methods[i].MetadataToken.RID - 1, methods[i].Body);

                    etor.MoveNext();
                    if (i % interval == 0 || i == methods.Count - 1)
                        progresser.SetProgress(i + 1, total);
                }
            }
 /// <summary>
 /// 练习时间进度显示
 /// </summary>
 /// <param name="ucTraningProgresser"></param>
 internal void setTranningProgressView(IProgresser traningProgresser)
 {
     this.traningProgresser = traningProgresser;
 }
 /// <summary>
 /// 间隔进度显示
 /// </summary>
 /// <param name="stepProgresser"></param>
 internal void setStepProgressView(IProgresser stepProgresser)
 {
     this.stepProgresser = stepProgresser;
 }