ChannelFactory の閉じ忘れに注意

チャネルを閉じて安心するな。ChannelFactory にも Close メソッドがあるぞ。

var factory = new ChannelFactory<IGreetingService>(
  new NetTcpBinding(),
  "net.tcp://localhost:808/IGreetingService");

var channel = factory.CreateChannel();

var result = channel.Greet("Honda");

// チャネルを閉じる
((IChannel)channel).Close();

// ChannelFactory<T> も閉じる
factory.Close();

ChannelFactory を閉じ忘れるという凡ミスを犯したせいで、トレースログに警告やエラーが大量に出力されていた…。 自戒のためにブログに書いておく。