2016-01-14 15 views
0

我通常將數據發送到事件樞紐如下列表..使用引起的ObjectDisposedException創造的EVENTDATA

var encoded = Encoding.UTF8.GetBytes(serializedString); 
using (var edata = new EventData(encoded) { PartitionKey = mypkey }) 
{ 
    edata.Properties[EventDataPropertyKeys.MyKey] = myvalue; 
    await _eventclient.SendAsync(edata).ConfigureAwait(false);       
} 

今天,我想試圖通過批量發送的數據,並試圖創建一個列表EVENTDATA的對象如下..

List<EventData> eventDataList = new List<EventData>(); 

//in a loop 
var encoded = Encoding.UTF8.GetBytes(serializedString);  
using (var edata = new EventData(encoded) { PartitionKey = mypkey }) 
{ 
    edata.Properties[EventDataPropertyKeys.MyKey] = myvalue; 
    eventDataList.Add(edata); 
} 

但是當我檢查eventdatalist對象,我發現顯示EVENTDATA對象的SerializedSizeInBytes財產

'This eventdata instance has already been disposed' 

,並在訪問拋出..

'eventData.SerializedSizeInBytes' threw an exception of type 'System.ObjectDisposedException' 

任何幫助表示衷心感謝..

感謝

+0

查看Danny Chen的回答。 「使用」塊用於在物體不再需要時自動處理物體。如果你需要你的對象在'using'塊之外,不要使用它。 – Wilsu

回答

2

因爲在第一個代碼段,你using塊內發送edata。但是在第二個片段中,您將edata放在列表中,之後循環訪問列表,並在using塊之後發送每個項目,其中項目edata已被處理。

相關問題