public void AddListener <TRequest, TResponse>( IPEndPoint endpoint, IRequestResponserFactory <TRequest, TResponse> requestResponserFactory) { var listener = new Listener <TRequest, TResponse>( endpoint, requestResponserFactory, tokenSource.Token); listener.StartListening(); listeners.Add(listener); }
public Listener( IPEndPoint endpoint, IRequestResponserFactory <TRequest, TResponse> requestResponserFactory, CancellationToken cancellationToken) { this.endpoint = endpoint; this.requestResponserFactory = requestResponserFactory; this.cancellationToken = cancellationToken; listener = new TcpListener(this.endpoint); // 1. クライアントからの接続を待つ listener.Start(); // 終了処理を予約しておく cancellationToken.Register(() => { _litenerTask?.Wait(); listener.Stop(); }); }