2
我當前從遠程流中獲取程序集作爲字節數組。無論如何加載它到一個新的AppDomain?將字節[]裝載到新AppDomain中
AppDomain.Load(byte [])不起作用,因爲它給我FileNotFoundException,我假定程序集必須在我的計算機上。
AppDomain domain = AppDomain.CreateDomain("Test");
Thread t = new Thread(() =>
{
Assembly assembly = domain.Load(bytes);
MethodInfo method = assembly.EntryPoint;
if (method != null)
{
object o = assembly.CreateInstance(method.Name);
try
{
method.Invoke(o, null);
}
catch (TargetInvocationException ex)
{
Console.WriteLine(ex.ToString());
}
}
});
t.Start();
你在說什麼,我應該創建一個類或方法,我會在AppDomain上面?我需要看看那些文章。 – 0xFF
是的,您應該從您希望將其加載到的域內加載程序集。否則,您可能會像當前示例一樣從新的AppDomain中泄漏類(它會創建對父域可見的對象)。附註:我假設你明白線程與AppDomain無關,任何線程中的代碼都可以多次跨AppDomain邊界。 –
線程是繞過錯誤的一種方法(我試圖在WinForm中運行WinForm),並且我意識到類泄漏。非常感謝您的幫助。 – 0xFF