我通常按如下方式将数据发送到事件中心..
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 :(得分:2)
因为在第一个代码段中,您在edata
块内发送了using
。但是在第二个代码段中,您将edata
放入列表中,然后循环遍历列表并在using
块之后发送每个项目,其中项目edata
已经处理完毕。