public async Task DuplexStreamingCall(Status status = Status.Ok) { try { using (AsyncDuplexStreamingCall <PingRequest, PingResponse> call = _client.DuplexPing()) { Task responseReaderTask = Task.Run(async() => { while (call != null && await call.ResponseStream.MoveNext()) { } }); await call.RequestStream.WriteAsync(new PingRequest() { Status = status }); await call.RequestStream.WriteAsync(new PingRequest() { Status = status }); await call.RequestStream.CompleteAsync(); await responseReaderTask; } } catch (Exception) { // ignored } }