この場合、プロキシのCloseCompletedイベントを購読するのは悪いですか?C#拡張メソッドでイベントを購読するのは悪い習慣ですか?
public static void Close(this MyWCFServiceClient proxy)
{
proxy.CloseCompleted += (o, e) =>
{
if (e.Error != null)
proxy.Abort();
};
proxy.CloseAsync();
}
プロキシは、もはや任意のコードで参照されている場合に、それはまだガベージコレクションを取得しません、または拡張メソッド内のイベントサブスクリプションは、プロキシへの参照を保持してたむろしますか?
また、proxy.Abort()を使用するとどうなりますか?ここでのプロキシはメソッドのパラメータなので、このラムダによって取得されるため、プロキシオブジェクトへの参照を保持するクラスを作成して割り当てる必要があります(結局のところ、通常のメソッドパラメータであり、拡張メソッドは変更されません何か)。もちろん、同じように動作するので、コレクションには何も変わりません。 –
ああ、確かに。あなたは送信者をキャストすることによってそれを避けることができるかもしれませんが、あなたは正しいです。そしてあなたが言うように、それはとにかくコレクションに影響を与えません。 –