C# 异步亚马逊冰川下载
我想使用线程池异步下载多个glacier文件。我目前的方法使用高级API进行Glacier下载,但每个线程都在下载方法上等待,直到下载工作完成。下面是所有踏板等待的代码C# 异步亚马逊冰川下载,c#,amazon-web-services,amazon-glacier,C#,Amazon Web Services,Amazon Glacier,我想使用线程池异步下载多个glacier文件。我目前的方法使用高级API进行Glacier下载,但每个线程都在下载方法上等待,直到下载工作完成。下面是所有踏板等待的代码 ArchiveTransferManager manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USEast1); DownloadOptions options = new DownloadOptions
ArchiveTransferManager manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USEast1);
DownloadOptions options = new DownloadOptions();
manager.Download(vaultName, archiveId, downloadFilePath, options);
有人可以建议我如何异步下载归档文件,这样我的线程在获得作业id后就会返回,并且在下载完成时会引发一些事件
问候,,
Haseena如果Amazon不提供异步API,您需要自己实现一个。每次下载都有一个线程,只需让下载线程在下载完成时通知主线程即可
TPL可以帮助您自动完成这一任务-创建一个下载文件的任务,然后等待它。glacier中的每个归档文件对我来说都是一小块512 KB大小的文件,我们有一些内部逻辑,我们必须保持较小的大小。因此,如果我想下载1 GB大小的文件,我将在内存中运行2048个线程。你不会得到2048个正在运行的线程,线程池没有那么大。我想我可以通过使用低级别API下载glacier来实现这一点。低级.net API提供作业id和队列URL一旦添加请求进行下载,我可以在单独的线程中使用此作业id和URL进行池化。