-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 つまたは両方のスレッドで 1 つのファイルを呼び出すと成功し、Console.WriteLine が 2 回ポストされます。ただし、2 つの異なるファイル (各スレッドで 1 つのファイル) を呼び出すと、2 回目の呼び出しで NullReferenceException が発生します。

これはすべて C# でコーディングされています。助けてください :(

4

2 に答える 2

0

extern エイリアス名前空間エイリアス修飾子を使用して、異なるアセンブリに属する​​が同じ名前空間を持つ型を読み込むことができます。

これについては、こちらおよびUsing two .NET libraries with the same namespace で説明されています。

于 2012-05-16T14:36:53.203 に答える
0

異なるアセンブリに同じ型名「dis.Code」があるため、問題が発生する可能性がありますか? そして、2 番目のアセンブリを読み込もうとすると失敗し、null が返されます

于 2012-05-16T14:29:59.080 に答える