2007年01月06日
AppDomainでのデリゲート
AppDomainの動作を調べるために、以下のようなコードを書いてみた。
別AppDoaminのメソッドを呼び出す際に、Delegateを引数に渡し、
呼び出されたAppDomainのメソッドから、そのDelegateを呼び出すというもの。
この場合、CallBaclMethodは、Main()が実行されているデフォルトのAppDomainではなく、作成した"DomainB"側で、処理が実行される。
...
で、MSDNのドキュメントを見ていたら、AppDomain.DoCallBack メソッドがあるのを知る。なるほど、これを使うと、delegateを別ドメインで動作させることもできるみたいだ。
別AppDoaminのメソッドを呼び出す際に、Delegateを引数に渡し、
呼び出されたAppDomainのメソッドから、そのDelegateを呼び出すというもの。
public static void Main() {
Console.WriteLine(AppDomain.CurrentDomain.GetHashCode().ToString());
AppDomain domain = AppDomain.CreateDomain("DomainB",
null,
(AppDomainSetup)null);
ObjectHandle oh = domain.CreateInstance("GushwellAssembly", "Gushwell.MyType");
MyType testObj = (MyType)oh.Unwrap();
testObj.Execute(CallBackMethod);
}
public static void CallBackMethod() {
Console.WriteLine(AppDomain.CurrentDomain.GetHashCode().ToString());
}
public delegate void AppDomainDelegate();
public class MyType : MarshalByRefObject {
public void Execute(AppDomainDelegate del) {
Console.WriteLine(AppDomain.CurrentDomain.GetHashCode().ToString());
del();
}
}
この場合、CallBaclMethodは、Main()が実行されているデフォルトのAppDomainではなく、作成した"DomainB"側で、処理が実行される。
...
で、MSDNのドキュメントを見ていたら、AppDomain.DoCallBack メソッドがあるのを知る。なるほど、これを使うと、delegateを別ドメインで動作させることもできるみたいだ。
Posted by gushwell at 17:18│Comments(0)│TrackBack(0)
この記事へのトラックバックURL
http://trackback.blogsys.jp/livedoor/gushwell/50675742