作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要取消使用
启动的正在进行的下载fileTransferUtility = new TransferUtility(/*...*/);
var uploadRequest = new TransferUtilityUploadRequest() /* config parameters... */
fileTransferUtility.BeginUpload(uploadRequest, new AsyncCallback(uploadComplete), file);
我已经搜索过 SO 和文档,但找不到方法...
基本原理:用户可以选择要上传的文件,并且可以选择非常大的文件,比如 1GB。我需要能够取消它。
在最坏的情况下,我可以尝试完全终止线程,或者以不干净的方式关闭上传,但是怎么做呢???
谢谢!
最佳答案
我收到了 official answer from Amazon对此。这是他们的回复:
var fileTransferUtility = new TransferUtility(/* */);
var uploadRequest = new TransferUtilityUploadRequest();
Thread thread = new Thread(() => fileTransferUtility.Upload(uploadRequest));
Thread.Sleep(5000); // If not done in 5 seconds abort
if(thread.IsAlive)
thread.Abort();
而不是使用 BeginUpload
/EndUpload
调用,您需要使用包装在线程中的 Upload
调用,并堆放对此的引用线程。
如果用户需要取消,在线程上调用Abort()
,这将取消上传。当然,您需要清理部分上传的文件(他们会为此收费!)。
正如我所怀疑的:非常简单直观,但并不那么容易找到:)
关于c# - S3 分段上传 : how can I cancel one?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16485629/
我是一名优秀的程序员,十分优秀!