C# System.EntryPointNotFoundException在输出中以并行红色显示

C# System.EntryPointNotFoundException在输出中以并行红色显示,c#,parallel-processing,C#,Parallel Processing,我有一些小问题,但我似乎看不出哪里出了问题,有人能帮我解决吗: 负载组件fn public static Assembly LoadAssembly(string assemblyfile) { Assembly library; using (var fs = File.Open(assemblyfile, FileMode.Open)) { using (MemoryStr

我有一些小问题,但我似乎看不出哪里出了问题,有人能帮我解决吗:

负载组件fn

public static Assembly LoadAssembly(string assemblyfile)
        {
            Assembly library;
            using (var fs = File.Open(assemblyfile, FileMode.Open))
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    byte[] buffer = new byte[1024];
                    int read;
                    while ((read = fs.Read(buffer, 0, 1024)) > 0)
                        ms.Write(buffer, 0, read);
                    library = Assembly.Load(ms.ToArray());
                }
            }
            return library;
        }

public static string[] GetDLLInfo(string assemblyfile, bool onlyNameSpace)
            {
                var strAssembly = LoadAssembly(assemblyfile).GetTypes();
                List<string> classList = new List<string>();

                var xx = strAssembly.Select(t => t.Namespace).Distinct().ToList();
                var nmSpaceLiStrings = xx.ToArray();

                Parallel.ForEach(nmSpaceLiStrings, x =>
                {
                    var types = strAssembly.Where(t => t.IsClass && t.Namespace == x).ToList();
                    types.ForEach(t => classList.Add(t.FullName));
                });

                /* foreach (var x in nmSpaceLiStrings)
                {
                    var types = strAssembly.Where(t => t.IsClass && t.Namespace == x).ToList();
                    types.ForEach(t => classList.Add(t.FullName));
                } */

                if (onlyNameSpace)
                {
                    return nmSpaceLiStrings;
                }
                return classList.ToArray();
            }
我的平行线是否出了问题,并为我指明了正确的方向


提前感谢。

您是否尝试过使用ConcurrentBag而不是将类名添加到列表中?

什么是LoadAssembly方法?如何申报?异常意味着dll中不存在某些方法。所以问题出在程序集本身或LoadAssembly声明中。

我是c#tho中的新手…所以我的耳朵还没有使用这样的高级术语,感谢您提供的信息,我今天将尝试研究它?加载程序集方法只是通过反射、使用流等动态加载dll。我尝试删除“Parallel.ForEach xxxx”并尝试使用ForEach,它返回的很好,没有注释,但是当我使用“Parallel”时,它返回的很好,注释是“类型xxx的第一次机会异常”…对于注释来说,这是loadAssemblyso,问题就在那里。可能有不同的原因-首先检查声明。
A first chance exception of type 'System.EntryPointNotFoundException' occurred in mscorlib.dll