各プラグインが独自のAppDomain
にロードされているC#でプラグインフレームワークを実装しようとしています。 AppDomains
の間のリモートレイヤーが私のプラグインのインスタンスをガベージコレクションしているように見える問題があります。各プラグインはこのクラスから継承します:AppDomainのオブジェクトでガベージコレクトが発生する
public class PluginRefObject : MarshalByRefObject{
public override object InitializeLifetimeService() {
return null;
}
}
私はオブジェクトに無限の寿命を与えると考えていました。しかし、プラグインは少しのために働くように見えるし、その後、突然、私はエラーメッセージを表示してRemotingException
を取得する:グーグルでから、私は信じて、
Object 'longhexstring.rem' has been disconnected or does not exist at the server
は、GCが私のリモートオブジェクトを削除したことを意味します。このオブジェクトを生かし続けるために他の何かをしなくてはなりませんか?
可能な答えアンロードするために、次のとおりです。http:/を/stackoverflow.com/a/6339701/1186321 – denvercoder9
ええ、私はそれを見ました。リンクが悪く、投稿された.chmファイルが開かない – spectacularbob
謝罪;私はこれが参考になると思います:https://msdn.microsoft.com/en-us/library/23bk23zc(v=vs.85).aspx – denvercoder9