예제 #1
0
        /// <summary> アップロード済みのファイルのハッシュデータ取得. </summary>
        private async Task <Dictionary <string, string> > GetUploadedObjectHashTable(S3Client s3Client, S3Object[] s3Objects)
        {
            var hashTable = new Dictionary <string, string>();

            var tasks = new List <Task>();

            foreach (var s3Object in s3Objects)
            {
                var task = Task.Run(async() =>
                {
                    var metaDataResponse = await s3Client.GetObjectMetaData(s3Object.Key);

                    var fileHash = metaDataResponse.Metadata[MetaDataHashKey];

                    lock (hashTable)
                    {
                        hashTable[s3Object.Key] = fileHash;
                    }
                });

                tasks.Add(task);
            }

            await Task.WhenAll(tasks.ToArray());

            return(hashTable);
        }