C#学习教程:AmazonS3TransferUtility.Upload在C#中挂起一切正常,除非我进入一个大于15megs(megs,是的,不是Gigs)的文件,应用程序会冻结。这是在C#中,非常简单。vartransferRequest=newTransferUtilityUploadRequest{Key=firstKey,FilePath=fileName,BucketName=ContentBucket,Timeout=3600000,ContentType=GetContentTypeForFileExtension(fileName)};transferRequest.UploadProgressEvent+=DisplayFileProgress;quetransferUtil.Upload)(ferRequest)也就是说,它适用于15兆或更小的文件......但对于更大的文件,它只是停止并永远卡在“上传”命令上。15兆需要40秒,所以我期待一个30兆的测试文件,也许2分钟......但10分钟后,没有爱。任何建议将不胜感激,不幸的是我将处理很多超过50兆的文件。请注意,如果我在VisualStudio.net的AWSExplorer中,我可以手动上传50+megs的文件,没有任何问题,而且速度相对较快。所以这很“有趣”……经过进一步审查,我的50兆字节文件上传得很好。它附加到UploadProgressEvent的代码实际上导致事情冻结,因为如果我将其注释掉,50兆文件上传没有问题。如果我保留此代码,则15meg文件会在进度条上显示其进度。但是,任何大于15兆的数据实际上都会导致整个应用程序冻结。谁能告诉我处理进度条更新的代码可能有什么问题?privatevoidDisplayFileProgress(objectsender,UploadProgressArgsargs){pbFileProgress.Invoke((MethodInvoker)delegate{pbFileProgress.Value=args.PercentDone;pbFileProgress.Refresh();});}我只是设置了"transferRequest.UploadProgressEvent+=Display"FileProgress。就像我说的,奇怪的是,这适用于较小的文件,但锁定较大文件的所有内容。尝试使用BeginUpload方法而不是Upload。transferUtility.BeginUpload(request,newAsyncCallback(uploadComplete),null);}privatevoiduploadComplete(IAsyncResultresult){varx=result;}像以前一样设置传输实用程序和UploadProgressEvent。像您一样在流程处理程序中使用Invoke方法。如果您使用BeginUpdate()而不是Update(),它将防止应用程序在第一次更新表单时挂起。我在任何地方都找不到这个解决方案,所以我希望它对你有用。DisplayFileProgress线程安全吗?我相信(查看一些旧代码)每个上传线程独立调用回调。下面的代码是我们用来上传5MB到1-2GB左右文件的小工具的一部分。它与您的并没有太大不同,但也许它可能会有所帮助。以上就是C#学习教程:AmazonS3TransferUtility.Upload挂起共享C#中的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——varwriterlock=newobject();使用(vartu=newTransferUtility(amazonS3Client,tuconfig)){varturequest=newTransferUtilityUploadRequest().WithBucketName(bucket).WithFilePath(file).WithKey(Path.GetFileName(file)).WithStorageClass(S3StorageClass.ReducedRedundancy).WithPartSize(5*1024*1024).WithAutoCloseStream(真).WithCannedACL(S3CannedACL.PublicRead);tuconfig.NumberOfUploadThreads=Environment.ProcessorCount-1;//如果不运行批处理则显示进度信息if(interactive){turequest.Upload+Progress(s,e)=>{lock(writerlock){...我们的进度例程...}};}tu.Upload(turequest);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
