私は、WCFクライアントを作成し、標準メソッドを呼び出し、完了時にクライアントを閉じるか中止することに関するベストプラクティスに精通していますが、クライアントとの非同期メソッドについて疑問に思っています。
非同期呼び出しの結果を取得するために、消費クラスがアタッチするパススルーイベントを持つマネージャークラスがあります。例えば:
internal sealed class CommController
{
public event GetClientIdEventHandler ClientIdReceived;
private readonly LocalCommSvcClient _localCommSvcClient = new LocalCommSvcClient();
public CommController()
{
_localCommSvcClient.GetClientIdCompleted += (o, e) => ClientIdReceived(o, e);
}
public void GetClientIdAsync()
{
_localCommSvcClient.GetClientIdAsync();
}
}
しかし、クライアントがどこで閉鎖および/または処分されているのかわかりません。非同期の使用法に関連するため、WCFクライアントを閉じるためのベストプラクティスを実際に見つけることができませんでした。.Close()や.Abort()の呼び出しはどこに置くべきですか?