我有一個C#2.0類用下面的代碼:的AppDomain DoCallBack FileNotFoundException異常 - C#
public class MyClass : MarshalByRefObject, IDisposable
{
private string _appName;
private AppDomain _app;
public MyClass(string appName)
{
_appName = appName;
_app = AppDomain.CreateDomain("NewDomain" + _appName);
_app.DoCallBack(new CrossAppDomainDelegate(CallBackMethod));
}
public void Dispose()
{
AppDomain.Unload(_app);
}
public static void CallBackMethod()
{
//some operations
}
}
這個類是下一個類庫項目包含,然後從Web應用程序項目引用。
所以,在我的網頁我只是實例的對象,期待那類的構造函數創建一個新的AppDomain並執行指定的操作:
MyClass objMyClass = new MyClass("12022012213456");
但我不斷收到此錯誤:
Could not load file or assembly 'MyNamespace.MyClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
但這裏好奇的是,這個例外是在該行發生的事情:
_app.DoCallBack(new CrossAppDomainDelegate(CallBackMethod));
正如你所看到的,它發生在MyClass,所以我不明白它怎麼能告訴我,如果代碼已被執行,程序集無法找到?我只是不明白。
順便說一句,我是使用AppDomain的新手,也許我對一些概念感到困惑。
您可以在_app = AppDomain.Create行之後找到__app.BaseDirectory和_app.RelativeSearchPath屬性嗎?每個應用程序域必須解析它自己的程序集。把它看作是一個過程中的一個過程。出於某種原因,新應用程序域無法找到程序集,RelativeSearchPath和BaseDirectory可能會提供一些線索。 – Adam 2012-03-03 22:51:03
@Adam的值是:RelativeSearchPath = null; BaseDirectory =「c:\ WINNT \ Microsoft.NET \ Framework \ v2.0.50727 \」,它們是好的嗎? – lidermin 2012-03-03 23:03:40