我需要取消由以下命令启动的正在进行的下载
fileTransferUtility = new TransferUtility(/*...*/);
var uploadRequest = new TransferUtilityUploadRequest() /* config parameters... */
fileTransferUtility.BeginUpload(uploadRequest, new AsyncCallback(uploadComplete), file);
我已经搜索过SO和文档,但我找不到方法......
理由:用户可以选择要上传的文件,并且可以选择非常大的文件,例如 1GB。我需要能够取消这个。
在最坏的情况下,我可以尝试完全终止线程,或者以不干净的方式关闭上传,但是怎么办???
Thanks!
我收到了亚马逊官方回应关于这一点。这是他们的回复:
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()
在线程上,这将取消上传。当然,您需要清理部分上传的文件(它们会收费!)。
正如我所怀疑的:非常简单直观,但并不那么容易找到:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)