27.7 并行语言集成查询(PLinq)

        static void Main()
        {
            ObsoleteMethods(Assembly.Load("mscorlib.dll"));
            Console.ReadKey();
        }
        private static void ObsoleteMethods(Assembly assembly)
        {
            var query = from type in assembly.GetExportedTypes().AsParallel()
                        from method in type.GetMethods(BindingFlags.Public | BindingFlags.Static | BindingFlags.Static)
                        let obsoleteAttrType = typeof(ObsoleteAttribute)
                        where Attribute.IsDefined(method, obsoleteAttrType)
                        orderby type.FullName
                        let obsoleteAttrObj = (ObsoleteAttribute)Attribute.GetCustomAttribute(method, obsoleteAttrType)
                        select string.Format("Type={0} \n Mehthod={1} \n Message={2} \n ", type.FullName, method, obsoleteAttrObj.Message);
            foreach (var item in query)
                Console.WriteLine(item);
            //query.ForAll(a => Console.WriteLine(a));    //让多个线程同时调用Console反而损害性能,因为Console在内部进行线程同步
            //query.Distinct().AsOrdered();
            //query.OrderBy(a => a.Length).AsUnordered();
            //query.WithExecutionMode(ParallelExecutionMode.ForceParallelism);
            //query.WithMergeOptions(ParallelMergeOptions.AutoBuffered);
        }

猜你喜欢

转载自www.cnblogs.com/kikyoqiang/p/10201016.html