私は、コンテナを設定するためのクラスFooを持っています。これは、Windowsサービスのエントリポイントとして使用される別のクラスBarのファクトリとして機能します。Autofac OnRelease()が呼び出されていません
Barクラスには、ソケット接続を開くBazのインスタンスが挿入されています。
Fooでは、IBazには接続を開くためのOnActivated()と接続を閉じるOnRelease()が設定されています。
受け入れテストでは、Fooを使用してBarを作成し、期待される結果を検証します。問題は、Baz接続が決して閉じられないためテストが完了しないことです。これはOnRelease()が呼び出されないためです。
Fooが範囲外になってガベージコレクトされると、コンテナはOnRelease()デリゲートを呼び出す必要があります。
どうしてこのようなことは起こりませんか?
私はちょうどこれにつまずいた。詳細は今は思い出せませんが、OnRelease()は呼び出されていないと思います。なぜならソケットはオブジェクトを生かしているからです。 –