2017-05-30 45 views
0

有没有一种方法可以在循环中添加流时开始返回流。WCF在完全写入之前返回一个流

我的目标是返回x个记录。 例如10条记录。但我不想在发送之前处理它们并缓冲它们,因为它需要每个记录一秒钟,以便延迟10秒。

我更喜欢消费者在添加记录时收到记录,并且可以在全部10条记录完成之前开始处理它们。

我一直要求他们一个一个地等待,直到两边都被处理完毕,才请求下一个。但是这不是更慢吗?因为在我看来,服务器或消费者会在闲置时处于闲置状态,而当其他人正在处理闲置时,可能会朝着最终目标进行处理。

两个实现等到所有10个都返回前完成。

//public List<MyObject> GetObjects(int count) 
public Stream GetStream(int count) 
    { 
     var stream = new MemoryStream(); 

     for (int i = 0; i < count; i++) 
     { 
      var myObject = GetNextObject(); 

      if (myObject!= null) 
      { 
       stream .Write(myObject); 
      } 
      else // break from loop 
       break; 
     } 

     return stream; 
    } 

回答

1

您可以尝试使用duplex service。服务器可以将每个对象发送到客户端的回调。

+0

看起来像什么后谢谢:) – Mcloving

相关问题