0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DoCallBack
{
class Program
{
static void Main(string[] args)
{
AppDomain newDomain = AppDomain.CreateDomain("New Domain");
Console.WriteLine(newDomain.BaseDirectory);
newDomain.DoCallBack(new CrossAppDomainDelegate(SayHello));
AppDomain.Unload(newDomain);
}
}
}
我想在新的應用程序域中調用SayHello()方法。讓我們假設,HelloMethod DLL是第三方,我沒有代碼。我只有組裝。但我知道它有SayHello()方法。我能做什麼?在新的應用程序域中啓動第三方DLL中的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HelloMethod
{
class Program
{
static void Main(string[] args)
{
}
static void SayHello()
{
Console.WriteLine("Hi from " + AppDomain.CurrentDomain.FriendlyName);
}
}
}
在當前的代碼,它給錯誤
感謝分配,**新的CrossAppDomainDelegate **是必要的嗎?爲什麼我們可以沒有這個運行? – SHRI 2013-02-25 10:30:23
@SHRI有必要!編譯器爲您聲明的每個委託類型生成代碼。 CrossAppDomainDelegate可能讓編譯器知道委託應該從MarshalByRefObject派生,以允許跨AppDomain通信。這是我的猜測。重要的是你需要使用CrossAppDomainDelegate。 – 2013-02-25 13:00:58