- - PR -
[C#]AppDomain について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-06 18:46
いつもお世話になってます。
相変わらず AppDomain やらについて勉強中のまかろにです。 色々とテストをしていてふと気づいたんですが 例えば、C#で単純な実行ファイル(Windowsアプリケーションでプロジェクトを作って コンパイルしただけの、ただフォームが表示されるだけのもの) を2つ用意し それらをA.exe / B.exe とします。 そして、Aが起動したらBも起動するというふうにしてみようと思って Aのmain()の一番先頭でBを起動するコードを入れてみたんところ ProcessのStartメソッドで起動させた場合は普通に2つのフォームが開きますが AppDomain で新しいドメインを作って、ExecuteAssemblyメソッドで起動させた場合 Bのメッセージループ(?)から返ってこずに、Bのフォームを閉じたら Aのフォームが開くという感じです。 新しいドメインを作ってそこから起動させたので 別スレッドとしてお互い動いてくれるのかなぁなんて思っていたのですが どうも私が勘違いしてるみたいです。 よろしければこの辺りをご教授願えませんでしょうか? よろしくお願いします。 [開発環境] Windows XP Visual Studio .NET2005 | ||||
|
投稿日時: 2006-04-06 20:27
ExecuteAssemblyは確か同じスレッドで実行されたと思います。 ※でもメッセージループは共有されてたような気もしないでもない。 なので、スレッドを作成して、そちらから実行する必要があると思います。 作成したスレッドは、STAThreadに明示的に設定する必要があったような気もします。 | ||||
|
投稿日時: 2006-04-07 00:41
同じスレッドですか〜 なるほど、納得しました。 ということは、順序としては(試す環境が今は無いので予想で書きますが) ・Aのmain()の先頭で新しいスレッドを作成 ・AppDomain を作成 ・スレッドにドメインを割り当てる ・ExecuteAssemblyメソッドを呼んでBを起動 てな感じですかね? 3番目の「スレッドにドメインを割り当てる」ってのが 表現としてあってるのか微妙なとこなんですが・・・いかがでしょうか? |
1