在 Kinesis (KCL) C# 中处理 MemoryStream
Disposing of MemoryStream in Kinesis (KCL) C#
在 AWS Kinesis Client Library (KCL) there is a sample producer 中包含以下代码:
for (int j = 0; j < 10; ++j)
{
PutRecordRequest requestRecord = new PutRecordRequest();
requestRecord.StreamName = myStreamName;
requestRecord.Data = new MemoryStream(Encoding.UTF8.GetBytes("testData-" + j));
requestRecord.PartitionKey = "partitionKey-" + j;
PutRecordResult putResult = kinesisClient.PutRecord(requestRecord);
Console.Error.WriteLine(
String.Format("Successfully putrecord {0}:\n\t partition key = {1,15}, shard ID = {2}",
j, requestRecord.PartitionKey, putResult.ShardId));
}
为什么MemoryStream会这样?他们不应该处理流吗?谢谢
MemoryStream
不需要释放,因为它不占用非托管资源。仍然处置它是一个好习惯,以便按惯例处置任何一次性资源。如果那样会使代码变得笨拙,那么不这样做是可以的。这是安全的,没有代码味道。
在 AWS Kinesis Client Library (KCL) there is a sample producer 中包含以下代码:
for (int j = 0; j < 10; ++j)
{
PutRecordRequest requestRecord = new PutRecordRequest();
requestRecord.StreamName = myStreamName;
requestRecord.Data = new MemoryStream(Encoding.UTF8.GetBytes("testData-" + j));
requestRecord.PartitionKey = "partitionKey-" + j;
PutRecordResult putResult = kinesisClient.PutRecord(requestRecord);
Console.Error.WriteLine(
String.Format("Successfully putrecord {0}:\n\t partition key = {1,15}, shard ID = {2}",
j, requestRecord.PartitionKey, putResult.ShardId));
}
为什么MemoryStream会这样?他们不应该处理流吗?谢谢
MemoryStream
不需要释放,因为它不占用非托管资源。仍然处置它是一个好习惯,以便按惯例处置任何一次性资源。如果那样会使代码变得笨拙,那么不这样做是可以的。这是安全的,没有代码味道。