如何在Windows Mobile (.NET CF)上将程序集加载到不同的AppDomain中,以便后续卸载AppDomain?
AppDomain.Load在CF.NET中不可用,但您可以尝试执行一个程序集。请记住,该程序集需要有一个Main方法。
(Note: The Chinese characters used are in Simplified Chinese.)AppDomain newDomain = AppDomain.CreateDomain("newDomain");
newDomain.ExecuteAssembly("Application.exe");
class ServiceApplicationProxy : MarshalByRefObject
{
public void Configure()
{
Assembly serviceAssembly = Assembly.Load(new AssemblyName()
{
CodeBase = @"c:\fullpath\assembly.dll")
});
// do something
}
}
class Class1
{
public void Start()
{
Type activator = typeof(ServiceApplicationProxy);
AppDomain domain = AppDomain.CreateDomain(
"friendlyName", null, new AppDomainSetup());
ServiceApplicationProxy proxy =
domain.CreateInstanceAndUnwrap(
Assembly.GetAssembly(activator).FullName,
activator.ToString()) as ServiceApplicationProxy;
Console.WriteLine("Press ENTER to exit");
Console.ReadLine();
AppDomain.Unload(domain);
}
}
编辑:来自http://msdn.microsoft.com/en-us/library/system.appdomain(VS.71).aspx的文档:
.NET Compact Framework 平台注意事项:.NET Compact Framework 不支持将程序集加载到域中立代码区域,以供多个应用程序域使用。
AppDomain
时,我以为所有类型方法也都可用。 - Rubens Farias