問題タブ [applicationdomain]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - スタック オーバーフロー例外がプロセスをクラッシュさせないようにする
ユーザーがJavaScriptで記述されたスクリプトを提供して、その中で何らかのタスクを実行できるアプリケーションがあるとします。これは、Jint を使用して行われます。ただし、不適切に記述されたスクリプトは、スタック オーバーフロー例外を引き起こし、JintEngine.Run()
アプリケーション全体をクラッシュさせる可能性があります。スクリプトのエラーについてユーザーに通知したいと思います。
別のアプリケーション ドメインで Jint を実行しようとしましたが、役に立ちませんでした。SOE での AFAIK デフォルト アクションがプロセスを終了しているためです。CLR ホスティングを使用する以外の方法で変更できますか?
別のプロセスを実行できることはわかっていますが、それが私のフォールバックですが、それはしたくありません。
.net - Processes、AppDomains、Contexts、および Threads を構成するさまざまな「コンポーネント」は何ですか (およびそれらの関係は何ですか)?
私はこれに対する決定的な答えを得ることを本当に望んでいます。
以前、「スレッドとは (本当は) なんですか?」という質問がありました。私はいくつかの非常に良い答えを得ました。ここから得た教訓は、スレッドが次のようなものであるということです。
スレッドは、プロセッサー・レジスター (シングル・コア用) の独立した一連の値です。これには命令ポインタ (別名プログラム カウンタ) が含まれているため、何をどの順序で実行するかを制御します。また、スタック ポインターも含まれています。これは、スレッドごとに一意のメモリ領域を指す方が適切です。そうしないと、互いに干渉します。
すなわち
スレッドは、一連のレジスタ値よりも「具体的な」ものではありません
と
CPU レジスタの正確なリストはアーキテクチャによって異なりますが、命令ポインタとスタック ポインタはほぼ普遍的です。このスレッド (一連のレジスタ値) がプロセッサ コアにロードされ、スレッドが実行されている限り、スレッドを定義します。プロセッサは、スレッドが要求する命令をフェッチし、スレッド レジスタを更新しています。コンテキストの切り替えが必要な場合、プロセッサはこのレジスタ値のセットをメモリに保存し、通常は割り込み処理ロジックの一部として、別のスレッドに属するセットをロードします。
さらに、スレッドには TLS (Thread Local Storage) と独自の呼び出しスタックがあることも理解しています。
繰り返しますが、私の質問を明確にするために、スレッドのコンポーネント(タイトルに記載したとおり) は、レジスタ値、その TLS、およびそのコール スタックです。タイトルの他の項目 (プロセス、アプリドメイン、およびコンテキスト) のコンポーネントを知りたいです。
これは私が読んでいる本の図です (Pro C# 2008 and the .NET Platform)
この図が Win32 プロセスに関するものであることは理解していますが、同じ TLS のコール スタックの考え方が .NET にも当てはまると思います。また、これらのスレッド (A および B) を定義するレジスタ値 (またはレジスタ値が存在することを示すもの) が含まれていれば、この図はより良くなると思います。
現在、調査を続けておりますので、まとめてお聞きしたいと思います。Processes、AppDomains、および Contexts について同じ情報を知りたいです (これは、ホスティングの「階層」として理解している順序です。つまり、プロセス ホスト appdomains、appdomains ホスト コンテキスト、contexts ホスト スレッド)。
私の最終的な目標は、これらすべてのエンティティ (またはそれらが何であれ) の間の関係を図式化できるだけでなく、それらを実際に構成するコンポーネント (たとえば、スレッドの場合、レジスタ値、TLS、実際にそれらを構成する呼び出しスタック)。その際、この質問の図を最後に編集として投稿します。今のところ、これは私が読んでいる本から取った図です (プロセス、アプリ ドメイン、およびコンテキストに関して):
PS 誰かが既にこれらすべてを説明している図を知っているなら、私はそれを見てみたい. そうでない場合。. . なぜ一体がないのですか??
編集:これまでのところ、図として持っているものは次のとおりです
actionscript-3 - AS3 ローダーの unloadAndStop の奇妙な動作
AS3 ローダーのクラス unloadAndStop() は、ロード時に SWF のステージ上のすべてをアンロードして停止することを想定していますが、ライブラリ内のオブジェクトも変更します (ステージ上にない場合でも?)。
それを解決するために私の問題を説明します。AS3 アプリケーションに SWF を動的にロードし、applicationDomain と getDefinition を使用してそれらから必要なシンボルを抽出しています。読み込んでいる SWF/FLA のステージは空で、ライブラリにエクスポートされたシンボルしかありません。
問題は、内部にプリコンパイルされたクリップを含むシンボル (私の場合は Partigen エミッターですが、実際には問題ではないと思います) をロードすると発生します。これには、おそらくイベント リスナーまたはタイマーが含まれています。これらのクリップのコードは停止します。クリップの親 SWF をロードしたローダーによって unloadAndStop() が呼び出されると、正常に機能せず、奇妙な動作をします。unloadAndStop() が必要なイベントリスナーをそこから削除すると仮定しましたが、その理由はわかりません (繰り返しますが、ステージにはありません) 。
これらの事前にコンパイルされたクリップをフィルタリングしたり、実際に何が起こっているかをチェックしたりする独自の種類の unloadAndStop() を作成しますが、unloadAndStop() は API では利用できないことを実行すると確信しています。
この動作を説明できるものは何ですか? 誰でも可能な解決策を考えることができますか? ありがとうございました。
excel - vsto アドインは、Excel アプリケーション ドメインを使用します
私はVSTO 2010 Excelアドインに取り組んでいます。開発マシンの1つに、アドインをインストールします(すでにいくつかのアドインがインストールされています)。
構成ファイルを読み取れないことがわかりました()。これは、アドインが Excel.exe があるディレクトリ内の構成ファイルを検索しようとしたために発生します。
構成ファイル (名前を Excel.exe.config に変更) を Excel.exe と同じディレクトリに配置すると、正常に機能しました。
Excel と同じアプリケーション ドメインに読み込まれている可能性があります。しかし、この問題を解決するにはどうすればよいでしょうか。
返信してください、
ありがとう、よろしく、ディプテッシュ。
flash - 方法:子ApplicationDomainにのみロードされる独自のカスタムRSLを備えたFlexモジュール?
複雑なアプリケーションがあります。すべてのライブラリにFlex4.1RSLとカスタムRSLを使用しています(15個のカスタムSWCがあります-Flex Library Project)
必要な最小限のRSLでメインアプリケーションをロードしてから、ユーザーがアプリの最初の部分を操作している間に、バックグラウンドで他のすべてのRSLを使用してFlexModuleをロードしたいと思います。
メインアプリには3つのSWCが必要であり、モジュールには残りのSWCが必要です(12)。
すべてのRSLが(RSLとして)リンクされているApplication.mxmlとModule.mxmlを持つFlashBuilderApllicationプロジェクトが1つある場合
これを解決するにはどうすればよいですか。RSLはモジュールとともに子アプリケーションドメインにロードされますか?
現在使用しているもの:
...したがって、新しいAppドメインにロードする必要がありますが、RSLはすでに親ドメインにプリロードされています!。
モジュールで静的フィールド/シングルトンを使用しているので、それ以上ロードできません。
モジュールとそのRSLを子アプリドメインにロードできれば、クラス定義が分離され、それぞれが独自の静的フィールドを持つ2つのモジュールを使用できます。
c# - How can Application Domains be used to host 3rd party assemblies that provide UI controls in a Web or Windows app?
MSDN says:
Isolating applications is also important for application security. For example, you can run controls from several Web applications in a single browser process in such a way that the controls cannot access each other's data and resources.
How would this be accomplished? If I am using controls from an assembly on my WebForm as part of the UI, how would I load that from a separate domain?
Also, is this possible in Windows Forms, to have UI controls on your forms that are from an assembly loaded in a separate appdomain? If so, how would you do so?
I ask because I use many 3rd party UI control libraries. How would I use these in a "safe" way, hosted from a different application domain from my main application?
c# - .netのApplicationDomain-boundaryを介してコールバックを実装します
Applicationdomainを使用してdllを動的にロードし、必要に応じてアンロードします。ロードされたdll内のタスクがそれ自体で終了した場合、作成されたAppdomainからのコールバックメソッドが機能しません。
私が今まで持っているもの
と「スターター」側
OnClosedItself()はスターターにのみ認識されているタイプのメソッドであり、appdomainには存在しないため、これによりアセンブリが見つからないという例外が発生します。
OnClosedItselfをデリゲートとしてシリアル化可能なクラスにラップしても、同じです。
助言がありますか?
編集:私がやろうとしているのは、自己更新タスクを構築することです。そのため、新しいバージョンが利用可能になった場合にタスクを停止して再作成できるスターターを作成しました。ただし、タスクが他の場所から停止された場合は、スターターに終了するように通知する必要もあります。
//質問から多くの一時的なコードを削除しました
編集2:ハプロは私を正しい方向に向けました。セマフォを使用してコールバックを実装できました。
apache-flex - 別のアプリケーションドメインにロードされたオブジェクトをキャストするときに強制エラーを入力する
私のアプリケーションには現在、WidgetManagerによって管理されるいくつかのウィジェットが含まれています。ユーザーがウィジェット(ヘルパーウィジェットなど)をクリックすると、Widget Managerは、次のコード行を使用してウィジェットを別の兄弟アプリケーションドメインにロードします。
ただし、後でウィジェットの変数と関数を使用することはできません。Widget Managerのウィジェットのリストからヘルパーウィジェットを見つけようとしましたが、成功しました。しかし、ヘルパーウィジェットをタイプIBaseWidget(すべてのウィジェットが共有するインターフェイス)からタイプHelperWidgetにキャストしようとすると、次のエラーが発生します。
TypeError:エラー#1034:型強制が失敗しました....。
これは、ヘルパーウィジェットを使用しようとしているクラスのアプリケーションドメインが、ヘルパーウィジェットのアプリケーションドメインとは異なるためです。すべてのウィジェットをローダーと同じアプリケーションドメインにロードすることで、これを修正しようとしました。
ヘルパーウィジェットを読み込もうとすると、次のエラーが発生します。
TypeError:エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。
ヘルパーウィジェットを、他のウィジェットからアクセスできる共通のアプリケーションドメインにロードするにはどうすればよいですか?
asp.net - asp.net Webアプリケーションは、アプリプール内で実行されるプロセスと見なされますか?
asp.net Webアプリケーション(IISでホストされている)はプロセスと見なされますか?
そして、このプロセスはアプリケーションプールにあります。
また、アプリドメインに1つ以上のアプリケーションプールが存在する可能性がありますか?
これは正しいです?
c# - インスタンス アプリケーション ドメインを作成しようとしています
私は次のことをしようとしています:
私が間違っていることはありますか?作成は成功しましたが、場合によっては MyClass のインスタンスを使用しようとすると、予期しない例外が発生します。
編集済み:問題の原因が見つかりました。現在のアプリ ドメインに読み込んだ dll を使用して、他のアプリ ドメインからインスタンスを作成しましたが、矛盾が発生しました。
ありがとうございました。