【发布时间】:2013-08-13 23:45:02
【问题描述】:
我想将大文件(2 到 40 GB)上传到 Azure Blob 存储。
首先,我成功地将每个文件拆分为块(每个块 = 2 MB)。 然后我一个一个地上传块,在每个块上传成功后,我更新一个临时文件,以便在应用程序关闭时能够恢复上传。
现在我想让上传操作多线程。 在查看了 TPL 之后,我很困惑从哪里开始!
任何从 TPL 开始的指导?
void Upload(int segmentId)
{
try
{
string blockId = GetBlockId(segmentId);
var segment = GetSegment(FilePath, segmentId, SeqmentSize);
var md5Hash = CalcMd5Hash(segment);
var blob = new CloudBlockBlob(_link.Uri);
using (var memoryStream = new MemoryStream(segment))
{
blob.PutBlock(blockId, memoryStream, md5Hash);
}
SerializeStatus();
}
catch (Exception exception)
{
...
}
}
【问题讨论】:
-
请提供一些代码
-
您的可用上传带宽是多少??
-
@RobertoBonini ~ 8 Mbit
-
如果segment 3在segment 2之前被上传,那会被服务器上的
blockId处理吗? -
@Belogix 我有一个方法来处理段的顺序
标签: c# multithreading azure task-parallel-library