0

最近、スレッドについて勉強し始めました。最初から始めようと思い、MSDN のドキュメントを読み始めました。アプリケーションごとに分かれている ApplicationDomain についてお読みください。しかし、このリンクApplicationDomain and Threadsでは、それが言及されています

単一のアプリケーション ドメインで複数のスレッドをいつでも実行でき、特定のスレッドが単一のアプリケーション ドメインに限定されることはありません。つまり、スレッドはアプリケーション ドメインの境界を自由に越えることができます。

ユーザーがスレッドを作成し、それがアプリケーション ドメインをまたぐことが許可されている場合、そのスレッドは別のアプリケーション ドメインのオブジェクトまたはメモリ参照を参照できますか ??? 私が間違っている場合は、私を導いてください。

4

3 に答える 3

1

答えはイエスです。すべてのスレッドには、任意のオブジェクトを指すことができるスタックがあります。スレッド スタックのローカル変数は GC ルートです。つまり、スレッドが生きている限り、すべてを維持します。

于 2012-03-31T19:15:08.430 に答える
0

アプリケーション ドメインとスレッドの間に 1 対 1 の関係はありません。スレッドはアプリケーション ドメインの境界を越える場合がありますが、常に単一のアプリケーション ドメインで実行されています。

MSDN (http://msdn.microsoft.com/en-us/library/2bh4z9hs%28v=vs.90%29.aspx) から以下の情報を参照してください。

あるアプリケーションで実行されているコードは、別のアプリケーションのコードやリソースに直接アクセスできません。共通言語ランタイムは、異なるアプリケーション ドメイン内のオブジェクト間の直接呼び出しを防止することで、この分離を強制します。ドメイン間を通過するオブジェクトは、コピーされるか、プロキシによってアクセスされます。オブジェクトがコピーされる場合、オブジェクトへの呼び出しはローカルです。つまり、呼び出し元と参照されるオブジェクトの両方が同じアプリケーション ドメインに存在します。オブジェクトがプロキシ経由でアクセスされる場合、オブジェクトへの呼び出しはリモートです。この場合、呼び出し元と参照されているオブジェクトは、異なるアプリケーション ドメインにあります。クロスドメイン呼び出しは、2 つのプロセス間または 2 つのマシン間の呼び出しと同じリモート呼び出しインフラストラクチャを使用します。

次の記事も役に立つかもしれません: http://www.codeproject.com/Articles/26148/Beginners-Guide-to-Threading-in-NET-Part-1-of-n

于 2012-04-06T15:56:53.067 に答える
0

スレッドはコードを実行しますが、アプリケーション固有の型やオブジェクトを参照することはできません。

スレッドのプロパティのほとんどは読み取り専用であり、非常に具体的なもの ( CurrentCultreなど) を使用してカスタム型を渡すことはできません。

データを特定のスレッドに関連付ける唯一の方法は、スレッド ローカル ストレージを使用 することです。これはもちろん、アプリケーション ドメインから別のドメインに渡されることはなく、非常に特殊な場合にのみ役立ちます。

于 2012-03-31T19:12:19.863 に答える