アプリケーションドメインの罠。
C言語で遊んでたときは1アプリケーション=1プロセスが当たり前に思っていました。
時代は代わり.NET Frameworkでは1つのプロセスのなかに複数のアプリケーションをロードできるようになりました。 ロードした1つ1つのアプリケーションは「アプリケーションドメイン」とよばれる単位で管理されます。 C#で作成したアプリケーションを起動すると「アプリケーションドメイン」が1つ生成され、 この中にロードしたアプリケーションを格納します。その後、別アプリケーションをロードするときは 既存ドメインに追加したり、新規作成と選ぶことができます。 同じアプリケーションドメインに複数のアプリケーションを含む場合、メモリの共有が可能となります。 共有したくない場合は別々で管理してやればよいです。 で、別々で管理したときの話です。 ドメインを2つ用意し、アプリケーションAのForm1をそれぞれ表示させました。 まったく同じ画面が表示することを期待したのですが、何か違うんです。 Form1は画面上にボタンが貼り付けています。 さぁ間違いさがし。 右の画面は通常の呼び出し、左の画像は新規アプリケーションドメインから呼び出してます。 なぜボタンの文言の座標がずれるのかまったく検討がつきません。 ボタンだけではなく、ラベルも同様でした。 この問題が無ければどんなに嬉しかったことか・・・。 |