Система.EntryPointNotFoundException параллельно красный в выводе

У меня были некоторые незначительные проблемы, но я не могу, кажется, увидеть, где это пошло не так, может кто-то помочь мне:

Узел загрузки 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();
            }

Его вид странно, если я использую «foreach» (не параллельный, я не получил никакого предупреждения в диалоговом окне вывода, но когда я использую «параллельный» я получил :

A first chance exception of type 'System.EntryPointNotFoundException' occurred in mscorlib.dll

Идет ли моя параллель неправильно и показать мне правильный путь?

Спасибо заранее.

2 ответа

  1. Вместо добавления имен классов в список вы пробовали использовать ConcurrentBag<T>?

  2. Что такое метод LoadAssembly? Как это декларируется? Исключение означает, что какой-то метод не существует в dll. Таким образом, проблема заключается в самой сборке или в объявлении LoadAssembly.