Exemple #1
0
        //Bi-DirectionalStreamingRPC gRPC--双向流式
        //传入多个对象,返回多个结果对象
        private static async Task SelfIncreaseDoubleRPCMethod()
        {
            using (var channel = GrpcChannel.ForAddress("https://localhost:5001"))
            {
                var client          = new Test.TestClient(channel);
                var reply           = client.SelfIncreaseDouble();
                var bathCatRespTask = Task.Run(async() =>
                {
                    await foreach (var resp in reply.ResponseStream.ReadAllAsync())
                    {
                        Console.WriteLine($"返回结果:{resp.Message}");
                    }
                });
                for (int i = 0; i < 10; i++)
                {
                    int id = new Random().Next(2, 20);
                    Console.WriteLine($"传入参数:{id}");
                    await reply.RequestStream.WriteAsync(new BatchTheCatReq()
                    {
                        Id = id
                    });

                    await Task.Delay(100);
                }

                await reply.RequestStream.CompleteAsync();

                Console.WriteLine("处理完毕");
                await bathCatRespTask;
            }
        }