我可以同时打开两个流吗?或在另一个方法中调用一个方法?
在最坏的例子中,我需要从客户端到服务器的2个流,从服务器到客户端的1个流,有时只发送一条消息。流必须一直工作。
当我尝试在任务中执行2流方法时,只能先工作。
await Task.WhenAll(GetData(client), SendData(client));
private static async Task GetData(ServiceClient client)
{
using (var call = client.GetDataStream(new Protos.Model() { Id = 3 }))
{
await foreach (var item in call.ResponseStream.ReadAllAsync())
{
// do something with data and then send
SendData(item);
}
}
}
public static async Task SendData(ServiceClient client, Protos.Model item)
{
using (var call = client.SendDataToServer())
{
await call.RequestStream.WriteAsync(item));
}
}
答案 0 :(得分:0)
两种情况都受支持,并且许多用户通常使用它们。 1.您肯定可以同时打开多个流式RPC。 2.您可以从服务器端处理程序启动新的RPC。
不确定您的代码不起作用(您不会提及所收到的错误),但是在代码段中,嵌套的SendData()调用之前缺少await
。完全支持。