私は、リモートサーバーとのTCP接続を維持し、通信プロトコルを管理するサードパーティのライブラリを使用しています。接続が失われることもあるので、接続状態を監視して再接続を試みるスレッドがあります。通常は再接続できます。AppDomainは悪いサードパーティライブラリをラップするのに適していますか?
問題は、Connect()への呼び出しが返されないことがあります。私はそれがうまくいくプロセスを再開するので、デッドロックか静的な変数のどちらかが奇妙な状態になってしまって、ライブラリ内で何か奇妙なことが起こっていると思います。私はコードを逆コンパイルしましたが、わかりやすいように少し "創造的"です。
このサードパーティライブラリのアカウントでプロセスを再起動する必要がないように、これを記述する必要があります。ライブラリ自体には、Action{T}
という2つのコールバックがあります。独自のアプリドメイン内でライブラリを実行するのが良い選択ですか?この方法は、接続がダウンして再起動しない場合、私はappdomainを殺すことができ、新しいものを開始することができます。私はどんな考察をするべきですか?
+1 - 不正な第三者コードから自分自身を守る唯一の方法は代理プロセスです。 –