Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步亚马逊冰川下载_C#_Amazon Web Services_Amazon Glacier - Fatal编程技术网

C# 异步亚马逊冰川下载

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

我想使用线程池异步下载多个glacier文件。我目前的方法使用高级API进行Glacier下载,但每个线程都在下载方法上等待,直到下载工作完成。下面是所有踏板等待的代码

            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进行池化。