-2

所以我有 2 个不同的线程:thread1 和 thread2,使用以下方法运行:

public static void thread1()
{
    Assembly asm = Assembly.LoadFrom("t.dll");
    Type t = asm.GetType("dis.Code");
    Object Res = t.InvokeMember("Start", BindingFlags.InvokeMethod, null, null, null);

}
public static void thread2()
{
    Assembly asm = Assembly.LoadFrom("test.dll");
    Type t = asm.GetType("dis.Code");
    Object Res = t.InvokeMember("Start", BindingFlags.InvokeMethod, null, null, null);
}

我要做的是调用 2 个不同的文件“t.dll”和“test.dll”。它们都与包含上述程序的 .exe 文件位于同一目录中。.dll 文件唯一能做的就是一个简单的 Console.WriteLine。

所以这里的问题是:调用一个文件与 1 或两个线程导致成功,并将发布 Console.WriteLine 两次。但是,一旦我调用了 2 个不同的文件,每个线程 1 个文件,我在第二次调用中最终得到 NullReferenceException。

这都是用 C# 编码的。请帮忙 :(

4

2 回答 2

0

也许问题是因为您在不同的程序集中具有相同的类型名称“dis.Code”?当您尝试加载第二个程序集时,它会失败并返回 null

于 2012-05-16T14:29:59.080 回答
0

您可以使用外部别名命名空间别名限定符来加载属于不同程序集但具有相同命名空间的类型。

这已在此处使用具有相同命名空间的两个 .NET 库中进行了解释。

于 2012-05-16T14:36:53.203 回答