0

COM DLL (VC6.0 ATL ウィザード ビルド) があり、appdomain の ID を使用して、1 つのプロセスが複数の appdomain を作成し、すべてのプロセスがこの COM DLL をロードし、すべての COM DLL がメモリ空間を分離できるようにします。</p>

例えば

AppDomain Domain1 = AppDomain.CreateDomain("D1"); AppDomain Domain2 = AppDomain.CreateDomain("D2");

object obj1 = Domain1.CreateInstanceFromAndUnwrap("UnManagedCOMDLL.dll", "UnManagedCOMDLL.ShowTag");

オブジェクト obj2 = Domain2.CreateInstanceFromAndUnwrap("UnManagedCOMDLL.dll", "UnManagedCOMDLL.ShowTag")

この dll には、グローバル変数があり、ロードするたびに it++ になります。com は異なる appdomain にロードされていますが、グローバル変数は互いに共有されています。

なぜそのような結果が起こったのですか?appdomain はメモリ分離を維持する必要がありますが、失敗しました。

ただし、マネージ dll に対しては、appdomain は機能します。

助けて!!!!!

4

1 に答える 1

0

COM オブジェクトを 1 つ以上のホスティング プロセスにロードすることをお勧めします。それが、あなたが探しているタイプの隔離を彼らに与えることができる唯一の方法です. 自分で作成することも、COM+ を調べることもできます。

于 2011-09-08T12:25:25.640 に答える