問題タブ [appdomain]
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# - AppDomain とスレッド
基本的に、私がインターネット上で検索した小さなことについて理解したことから、スレッドは AppDomain 間を通過できます。今、私は次のコードを書きました:
これは正常に動作し、すべてが所定の位置に配置されています... メイン スレッドがプログラムの新しいバージョンに渡され、メイン アプリケーション本体の実行が開始されます。私の質問は、それを親に戻すにはどうすればよいAppDomain
ですか? これは可能ですか?私が達成しようとしているのは、2 つのドメイン間でクラスのインスタンスを共有することです。
java - 抽象化のようなJavaAppDomain?
.NetのAppDomainに似たJava抽象化があるかどうか知りたいです。
特に、Coldfusion / J2EEサーバーでは、メモリリークが遅く、まだ簡単に追跡できないため、数日ごとに再起動する必要があることがわかったので、興味があります。これにより、実行時間の長いプロセスが台無しになる可能性があります。特定の期間/メモリのしきい値を超えたときに、新しいJVMにユーザーをゆっくりとプッシュする方法が本当に必要です。
私の限られた.Netの経験から、これは、メモリ不足に陥ったAppDomainをリサイクルすることにより、IISとAppDomainがかなりシームレスに管理できる状況の1つであると確信しています。このシナリオを支援するAppDomainsを利用できない場合は、お知らせください。
助言がありますか?
c# - 完全信頼 AppDomain での最小信頼 AppDomain 相互呼び出しメソッド
AppDomain
full trust の full trust アセンブリで (リモート境界を越えて) メソッドを呼び出している minimum-trustがありますAppDomain
。
ただし、これらのメソッド呼び出しを行うと、多くのセキュリティ例外が発生します。最小信頼の「サンドボックス」が、その最小のセキュリティ権限を完全信頼アセンブリに伝達しているように見えます。
SecurityAction.Assert
完全信頼アセンブリのすべてのメソッドに'sをタグ付けする以外に、これを回避する方法はありますか?
ありがとう
log4net - appdomain 間の log4net
あるアプリケーション ドメインから log4net を初期化するアプリケーションがあり、それを別のアプリケーション ドメインで使用する必要があります。サポートされていますか?
そうでない場合、各 appdomain から log4net を初期化する必要がありますか? 同じアプリケーションで複数の初期化にリスクはありますか? 同じ log4net.config を使用する必要がありますか?
multithreading - COM 相互運用の appdomain
COM で別の .Net クラスを呼び出す c++ COM オブジェクトを呼び出す .Net クラスがあります。2 つの .Net クラスが別々の appdomain にあることがわかりました (log4net で問題が発生します)。ただし、それらは同じスレッドにあることに注意してください。
どうしてこれなの?それらが同じアプリドメインにあることを確認する方法はありますか?
.net - .NETアプリケーションドメインとは何ですか?
特に、2つの異なるアプリケーションドメインでコードを実行することの意味は何ですか?
データは通常、アプリケーションドメインの境界を越えてどのように渡されますか?プロセスの境界を越えてデータを渡すのと同じですか?この抽象化とそれが何に役立つのかについてもっと知りたいです。
編集:私はアプリケーションドメインを理解していませんが、一般的にAppDomainクラスの既存のカバレッジは良好です
c# - 派生クラスから基本クラスのメソッドを非表示にしますが、アセンブリの外部では引き続き表示されます
整理整頓についての質問です。プロジェクトはすでに機能しています。デザインには満足していますが、結び付けたい未解決の点がいくつかあります。
私のプロジェクトにはプラグイン アーキテクチャがあります。プログラムの本体は、それぞれが独自の AppDomain に存在するプラグインに作業をディスパッチします。
プラグインは、メイン プログラム (呼び出しの署名を取得するためDispatchTaskToPlugin
) とプラグイン自体によって API コントラクトとして使用されるインターフェイスで記述されます。
プログラムの本体でRegister()
が呼び出され、プラグインがそのコールバック メソッドを基本クラスに登録できるようになり、後でDispatchTaskToPlugin()
が呼び出されてプラグインが実行されます。
プラグイン自体は 2 つの部分に分かれています。プラグインのフレームワーク (セットアップ、ハウスキーピング、ティアダウンなど) を実装する基本クラスがあります。DispatchTaskToPlugin
が実際に定義されている場所は次のとおりです。
Register()
実際のプラグイン自体は、(基本クラスに最終的に呼び出すデリゲートを与えるための) メソッドを実装してから、それらのビジネス ロジックを実装するだけで済みます。
基本クラス ( BasePlugin
) では、プラグインが使用するために、あらゆる種類の便利なメソッド、収集されたデータなどを実装しました。その長引く方法を除いて、すべてがコーシャDispatchTaskToPlugin()
です。
クラスの実装から呼び出し可能であることは想定されていません-それらはそれを使用しません。Plugin
これは、プログラム本体のディスパッチャでのみ必要です。 派生クラス ( ) が基本クラス ( ) のメソッドを認識しないようにするにはどうすればよいですか?Plugin
BasePlugin/DispatchTaskToPlugin
髪を分割DispatchTaskToPlugin()
して、派生クラスから呼び出された場合は例外をスローできますが、納屋のドアを閉めるのが少し遅れています。私はそれを Intellisense から遠ざけるか、おそらくコンパイラにこれを任せたいと思います。
提案?
c# - シングルトン インスタンスとしての WCF serviceType
serviceType クラスをシングルトンとして初期化する Windows Communication Foundation サービス (この場合の appDomain は Windows フォーム アプリケーション) を作成しました。
サービスの開始は機能します。クライアントからの呼び出しは機能します。しかし、サービスが上記のコードで自分自身を呼び出すと (「//サービスへの最初の呼び出しを行いますか?」)、System.TimeoutException が発生します。
シングルトン クラスには、初期化時に開始されるタイマー オブジェクトがあります。したがって、クライアントがサービスに対して呼び出しを行うと、クラスがインスタンス化され、タイマーが開始され、オブジェクトはタイマー オブジェクトを定期的に起動して存在し続けます。
文脈上、タイマーのイベントはシングルトンのプロパティを更新します。目的は、シングルトン クラスが定期的に計算を実行し、そのプロパティにデータを保持し、プロパティにあるものを呼び出し元のクライアントに返すことです。このようにして、定期的な (時間ベースの) 計算を実行するための呼び出しが制限され、すべてのクライアントが同じ更新されたデータを受け取ります。
問題は、サービスがホストされると、単一のインスタンスを作成してタイマーを開始するための呼び出しを行うクライアントが 1 つだけで済むことです。
リクエストを行う最初のクライアントが構成と初期化が行われるのを待つ必要がないように、サービスが 1 回の呼び出しでシングルトン クラスを初期化することを望みます。プログラムの起動時に更新されるデータ。「SetListText("サービスを利用できるようになりました。");」の直後 私は以下を持っています:
WCF サービスが同じ appDomain でそれ自体を呼び出す方法はありますか、それともこれは合理的に望ましくありませんか? この自己呼び出しコードを放棄し、最初のクライアントのサービス コールをそのまま使用する理由はありますか?
c# - 外部プロセスで実行される WPF「コントロール」を作成する
多数の子コントロールを含む WPF アプリがあります。
これらのコントロールの 1 つがサード パーティのライブラリをホストしており、その内部でネイティブ コードを実行し、アクセス違反をスローしてアプリケーションをクラッシュさせます。残念ながら、ライブラリを削除することはできません。
私がやりたいことは、新しい Windows プロセスを起動し、その中でサードパーティのライブラリをホストし、何らかの方法でそれと通信することです。Google Chrome と IE8 がブラウザ プラグインを処理するのとほぼ同じ方法です。
問題は、サードパーティのライブラリが画面に描画する必要があるため、WPF アプリのメイン ウィンドウ内に HTML iframe に相当するものを何らかの方法で配置する必要があることです。
どうやってこれを始めたらいいのかわからない。どんなアドバイスでも大歓迎です。