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

相關問題