簡體   English   中英

System.EntryPointNotFoundException以平行紅色顯示在輸出中

[英]System.EntryPointNotFoundException in Parallel red in output

我遇到了一些小問題,但是我似乎看不到哪里出了問題,可以有人幫我解決一下:

負載裝配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'(不是parallel,那有點奇怪,在輸出對話框中沒有警告,但是當我使用'parallel'時,我得到了:

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

我的平行測試是否出錯並向我顯示正確的方法?

提前致謝 。

您沒有嘗試使用ConcurrentBag <T>來代替將類名添加到列表中嗎?

什么是LoadAssembly方法? 如何聲明? 該異常表示dll中不存在某些方法。 所以問題出在程序集本身或LoadAssembly聲明中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM