問題タブ [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.
c# - In属性とOut属性は.NETでどのように機能しますか?
AppDomain
次のコードを使用して、境界を越えて配列をシリアル化しようとしています。
推測として、他の場所で属性に気付いた後、メソッドのパラメーターに属性をマークしました[In]
。[Out]
これにより、パラメーターが参照によって渡されたかのように動作するように見えました。
例えば:
属性を追加する前は、境界buffer
を越えてメソッドから戻った後、変数の内容が失われていました。AppDomain
クラス(SslStream
)は継承元でしたが、属性MarshalByRefObject
でマークされていませんでした。Serializable
これは、パラメーターを値渡しする唯一の方法ですか?これらの属性は、クラスがシリアル化されているときに.NETによって何らかの形で認識されていますか?そして、それらは本当にパラメータが参照によって渡される原因になるのでしょうか、それとも内容がコピーされたばかりなのですか?
c# - MarshalByRefObject が有効かどうかをテストするには?
VS2010 C# プロジェクトでは、MarshalByRefObject から派生したクラスがあり、Activator.GetObject を使用してそれを設定します。この派生クラスを使用して、ネットワークを介してマシンと通信します。
場合によっては、ターゲット マシンの電源が入っていて ping を実行できるが、通信したいプログラムが実行されていない場合があります。これにより、30 秒間待機した後に例外が発生します。派生した MarshalByRefObject が有効かどうかを確認する方法はありますか?
現在、try/catch がこの状況を処理していますが、30 秒の待機は受け入れられません。
c# - C#.NET Remotingのベストプラクティス?
わかりました。私は.NETリモーティングに非常に慣れていないことを知っています。ベストプラクティスに関する限り、質問があります。まず、私はすでに構築した社内アプリケーションを持っており、すべてのデータを処理するために参照するdllを持っています。サーバーバージョンのアプリケーションで、これらのクラスとそのメソッドをすべて利用し、これらのカスタムオブジェクトをやり取りできるようにしたいと考えています。
私の質問は、[Serializable]を前後に受け渡したいすべてのクラスに適用してから、Get、AddOrUpdate、Deleteなどのメソッドを具体的に使用する特別なクラスを作成する必要があるかどうかです。
現在、データベースとやり取りするすべてのクラスにGet、AddOrUpdate、およびDeleteメソッドがあります。これらのクラスすべてにMarshalByRefObject&[Serializable]を実行できないことをすでに学びました。そうしないと、問題が発生します。そのため、プロパティ定義やメソッド呼び出しではなく、「管理」(Get、AddOrUpdate、Deleteなど)を実行する個別のクラスを作成する必要があると考えています。
私が考えていることの例を実行する必要があります。
次に、実際にリストを作成するには、UserManagementのような別のクラスを作成します。
どんなアドバイスも大歓迎です!
c# - AppDomain.CreateInstanceAndUnwrapがWebサイトで機能しない
私は非常に単純なクラスCompiledFunction(MarshalByRefObject)を持っています-私はこのような新しいドメインでこれのインスタンスを作成しようとします
これはコンソールアプリケーションでは正常に機能しますが、ASP .NET MVCアプリケーションでは次の例外が発生します-これがWebアプリで機能しない理由について誰かが提案できますか?私が渡しているTパラメータはSystem.Decimalです。
c# - シリアル化できないオブジェクトを引数としてプロキシ メソッドに送信する方法。MarshalByRefObject ラッパー?
現在、AppDomains を利用するようにプラグイン アーキテクチャを修正しています。私のプラグインと私がオンラインで見つけた多くの例との主な違いは、プラグインが実行されてその結果がメイン アプリケーションに返されるのではなく、私のメイン アプリケーションがプラグインに情報を送信することです。
現状では、ローダーのインスタンスを別の AppDomain に作成します。次に、プラグイン アセンブリの読み込みなど、通常の初期化をすべて行います。この時点で、ローダーのプロキシを使用して、メイン アプリケーションから新しい AppDomain にデータを送信するメソッドを呼び出します。
シリアル化できない引数の型を持ち、MarshalByRefObject から派生していないメソッドを呼び出そうとすると、問題が発生します。
これらのタイプはサードパーティのコードからのものであり、プラグインはそれらを受け取ることを期待しているため、これを行う方法を見つけることができないようです. この質問 ( 「Must be MarshalByRefObject」を C# のような優れた複数継承の切断された言語で解決する方法は? ) を見つけた後、ある種のラッパーを作成することを考えていました。ここでの私の欠点は、サードパーティのコードを変更せずに作成する方法を単純に理解できないことです。
これが私の問題の例です:
どんな助けでも大歓迎です。
vb.net - vb.net から JavaScript オブジェクトにアクセスする
私は、(サードパーティが提供する) Web アプリとやり取りして追加機能 (メニュー項目の削除、ページからの情報のプルなど) を提供する vb.net アプリケーションに取り組んでいます。Web アプリは完全に javascript によって駆動されますが、asp.net でホストされ、Internet Explorer でのみ使用されます。
javascript オブジェクトからプロパティを読み取り、その関数の一部を実行しようとしています。スクリプトが存在する iframe の mshtml.HTMLDocument を取得し、次のコードを使用して、javascript オブジェクトを取得することができました。
jsObject は {System.__ComObject} として存在し、それを使用して、次のように関数を実行したり、プロパティを読み取ったりできます。
これはうまくいきます。ただし、jsObject を含むページ/フレームを離れてそこに戻ると、フレームから JavaScript オブジェクトを再度取得する (つまり、次の行を実行する) ときに、同じコードが例外をスローします。
例外: メンバーが見つかりません。(HRESULT からの例外: 0x80020003 (DISP_E_MEMBERNOTFOUND))
デバッグを停止して再起動すると、再び機能します (ページを離れるまでなど)。私のアプリに関する限り、javascript オブジェクトが消える原因は何なのかわかりません。アプリが COM オブジェクトへの参照を保持していることが原因であり、何らかの方法でそれを解放する必要があると推測しています (特に、MarshalByRefObject の基本型を持っているため、アプリ ドメイン間で渡されるので理にかなっています)。
なぜこうなった?javascriptオブジェクトにアクセスするより良い方法はありますか?それはプロパティと関数ですか?
prism - cross-AppDomain イベントの問題
POS for .Net で次のヘルパー クラスを使用して、別の AppDomain 内のハードウェアへの参照を取得します (必要ないくつかの制限を回避します)。<NetFx40_LegacySecurityPolicy enabled="true"/>
POS スキャナーがデータをスキャンするときに処理する基本的なクラスがあります。そのクラスには、データがスキャンされたときに発生させたいイベントがあります。ここにスニペットがあります:
PosHardware 抽象クラスが継承MarshalByRefObject
され、マークされていることに注意してください[Serializable]
。メインの AppDomain では、次のようにイベントを使用しようとしています。
ラムダを DataScanned イベントに追加しようとしている行にヒットすると、次のエラーが発生します。
ファイルまたはアセンブリ 'MyAssemlyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。
これは、AppDomains 間の通信の試行に関連している必要があります。何をすべきかよくわかりません。.Net の Pos に使用される別の AppDomain に "MyAssemblyName" を登録する必要がありますか?
私はプリズムを使用しているので、一部のモジュールは実行時に (出力ディレクトリのサブフォルダーに) ロードされます... 上記の最後のコード スニペットを使用するモジュールを含みます (Scanner = PosHelper.GetHardware....)
.net - System.Drawing.Drawing2D.Matrix が MarshalByRefObject から派生するのはなぜですか?
軽量構造体ではなくMatrix
、重量クラスが派生するのはなぜですか?MarshalByRefObject
webcam - リモート処理を使用した C# Web カメラ
私のプロジェクトはリモーティングに関するもので、ウェブカメラ コンポーネントを追加したいと考えています。これは次のとおりです。私のソリューションには 3 つのプロジェクトがあります... Client、Server、Remote.dll。Remote.dll は、サーバー マシンで動作するメソッドを持つ一般的なクラスです。クライアントからこれらのメソッドを呼び出すと、サーバー側で実行されます。だから今私の質問は、Webcamのコードをremote.dllに入れ、Webcamが画像をキャッチするたびに機能する「video_NewFrame」というイベントがあることです。しかし、コードがこのイベントに落ちると無限に実行され、クライアント側のタイマーも機能しないため、クライアント側から画像に到達できません。イメージをグローバル変数に割り当てようとしましたが、コードがクライアントに送信され、Remote.dll に再び送信されるたびに、変数が null になります...クライアントから同時にキャプチャされた画像にアクセスするにはどうすればよいですか? ここに私のコードがあります:
// そして私のクライアント側...
c# - .NET リモート処理でデフォルトで真の値を持つブール値メンバー
.NET リモート処理を使用しています。私はいくつかの public ブール値メンバーを持つクラスを持っており、宣言自体の時点でそれらを false に設定しています。このクラスは MarshalByRefObject クラスを継承しています。
クライアント アプリでこのクラス オブジェクトにアクセスすると、これらのブール値のメンバーはすべて true になります。これはどのように起こっていますか?