在 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 不需要释放,因为它不占用非托管资源。仍然处置它是一个好习惯,以便按惯例处置任何一次性资源。如果那样会使代码变得笨拙,那么不这样做是可以的。这是安全的,没有代码味道。