問題タブ [marshalbyrefobject]

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.

0 投票する
0 に答える
1326 参照

c# - MarshalByRefObject と AppDomain でメモリ リークを防ぐ方法は?

アプリでいくつかのスクリプト機能を使用できるように、実行時にいくつかのコードをコンパイルしようとしていますが、誰かがいたずらをしようとした場合に備えて、サンドボックスでスクリプトを実行したかったのです。

問題は、すべてが完了して出力が得られた後、メモリが解放されず、コードを実行するために生成された「c.dll」ファイルがプロセスでロックされたままになるため、削除しようとしても失敗することです。 - つまり、コードを 2 回実行しようとすると、「c.dll」が「別のプロセス」で既に開いているため、再度コンパイルできません。すべてのコードは次のとおりです。

すべてが始まる場所:

これがサンドボックスです。

これは CrossAppDomainObject です。

https://nbevans.wordpress.com/2011/04/17/memory-leaks-with-an-infinite-lifetime-instance-of-marshalbyrefobject/の Nathan Evans のブログから CrossAppDomainObject 抽象クラスを取得したことに注意してください。

私はここで完全に無知なので、私はどんなガイダンスにも大いに役立ちます。

編集:

ハンスが製図板に戻るように言った後、私はまさにそれを実行し、次の MSDN 記事を参照用に使用しました: https://msdn.microsoft.com/en-us/library/bb763046(v=vs.110).aspx

少し遊んだ後、これをハックしました:

0 投票する
0 に答える
776 参照

c# - VS で appdomain の戻り値をデバッグする方法

私の c# プログラムは複数の appdomain を使用してアセンブリをロード/アンロードしています。2 番目の appdomain の私のアセンブリは、MarshalByRefObject を継承するオブジェクトを返しています。

私の問題は、Visual Studio がそれに関する情報を表示できないことを教えてくれることです。

透過プロキシのランタイム タイプの取得は、このコンテキストではサポートされていません。

2 番目の appdomain のクラスにいるときに、このオブジェクトに関する情報を確認できます。

私の質問: Visual Studio にこのオブジェクトに関する情報を 1. appdomain に表示するように指示することは何とか可能ですか?

編集:

解決策を見つけましたが、これは単なる回避策です。json との間でオブジェクトをシリアライズおよびデシリアライズして、クリーン コピーを取得します。

しかし、より良い解決策があれば教えてください:)

編集2:

詳細に説明するコード:

0 投票する
0 に答える
128 参照

c# - C# の別のプロセスからクラスのインスタンスにアクセスする

インターフェイスを宣言する「Core」というプロジェクトがあります。そして、そのインターフェイスを実装するクラスをインスタンス化する「サービス」というプロジェクトがあります(依存関係で「コア」プロジェクトを参照します)。

「コア」(EXE)を実行できるため、両方のプロジェクトは独立して実行されます。実行している場合は、「サービス」が実行されているかどうかを確認し、実行されている場合は、「サービス」プロセスで作成されたクラスのインスタンスを取得して、そのメソッドを呼び出します。

こんな感じです(ほぼ)。

「コア」プロジェクトで

「サービス」プロジェクトで

あるプロセスから別のプロセスに何らかの形でマーシャリングする必要がありますが、それを呼び出す相互運用メソッドには慣れていません。