私は、同じコンピューター上にある2つの単純なプログラム間にリモートチャネルを確立するためにを使用RemotingServices.Marshal
しています。Activator.GetObject
public class IpcInterface : MarshalByRefObject
{
public int number = -1;
public string text = "default";
public List<String> strings;
}
// A simplification
number
両方のプログラムが正常に変更さtext
れ、完全に一意の値に変更されているため、チャネルが存在し、通信が可能であることを確認しました(確認済み)。
だから私はすぐに同じことをしようとしましたstrings
。
あるプログラムで、私はに電話しstrings.Add("1")
ました。strings
2番目のプログラムの内容を読んでみました。空でした。さらに、カウントはでした0
。オブジェクトを追加しなかったかのように、なぜオブジェクトstrings
が継続するのかわかりません。0
同じことがaStack<T>
とDictionary<T, K>
、にも起こります。要素を追加することはできません。一般に参照型で何か奇妙なことが起こっていないことを確認するためStringBuilder
に、IPCインターフェイスクラスにを入れてみました。その「状態」は、値を変更する両方のプログラムで正常に維持されました。
質問:文字列のリストが追加されないのはなぜですか、そして解決策は何ですか?
経験のある人がこの問題をすぐに見つけられることを願っています。同様の質問でグーグルを試しましたが、有用な結果は得られませんでした。驚いたことに、「. netremotingtransparentproxyのデバッグ」をグーグルで検索するための適切なリンクは1つしかありませんでした。それも私が持っている2番目の質問です。透過プロキシオブジェクトをデバッグするにはどうすればよいですか?
- すべてのオブジェクトは適切にインスタンス化されます(NullReferenceExceptionはありません。実際、例外はありません)。