コード例 #1
0
        private static async Task HandleClientServerStreamingCall(TestService.TestServiceClient client)
        {
            var tokenSource = new CancellationTokenSource();
            var call        = client.GetInputStreamAsServerStream(cancellationToken: tokenSource.Token, deadline: DateTime.UtcNow.AddSeconds(10));

            for (int i = 0; i < 3; i++)
            {
                var inputLine = Console.ReadLine();
                if (inputLine == "Q")
                {
                    tokenSource.Cancel();
                    break;
                }
                await call.RequestStream.WriteAsync(new EchoInput()
                {
                    Input = inputLine
                });
            }
            await call.RequestStream.CompleteAsync();

            var responses = call.ResponseStream.ReadAllAsync();

            await foreach (var res in responses)
            {
                Console.WriteLine("Get echo from stream: " + res.Output.Trim());
                Console.WriteLine("Get echo time: " + res.TimeStamp.ToDateTime().ToLocalTime());
            }
        }