C# System.EntryPointNotFoundException在输出中以并行红色显示
我有一些小问题,但我似乎看不出哪里出了问题,有人能帮我解决吗: 负载组件fnC# 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
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