Async, Await EventHandler return value

无人久伴 提交于 2020-06-17 13:25:08

问题


I'm trying to upload a file into S3bucket using with AWS Sdk for .Net.
I'm uploading a file like below:

Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button2.Click

   Await AddFileToFolderAsync(file, bucketName, fld) 
   ' here file is  file's fullpath,buckatename is  
   ' available s3bucket name, 
   ' fld is target folder path into that s3bucket.
End Sub


Public Async Function AddFileToFolderAsync(FileName As String, bucketName As String, folderName() As String) As Task
    Try
        If Not AmazonS3Util.DoesS3BucketExistV2(S3client, bucketName) Then
            MessageBox.Show("Bucket does not exist")
            Dim fname() As String = folderName
            CreateFolder(bucketName, fname)
        Else
            Dim keyname As String = "" 'destination path(s3 bucket folder)
            Dim filepath As String = FileName 'current file's local fullpath
            Dim fname As String = Path.GetFileName(FileName) 'filename

            For i = 0 To folderName.Length - 1
                keyname += folderName(i) & "/"
            Next

            keyname += fname  'bucket's target folder /fname (eg:folder/subfolder/file.mp4)

            Dim fileTransferUtility = New TransferUtility(S3client)
            Dim fileTransferUtilityRequest = New TransferUtilityUploadRequest With {
                .BucketName = bucketName,
                .FilePath = filepath,
                .StorageClass = S3StorageClass.Standard,
                .ServerSideEncryptionMethod = ServerSideEncryptionMethod.None,
                .PartSize = 6291456,
                .Key = keyname,
                .ContentType = "*.*"}

            AddHandler fileTransferUtilityRequest.UploadProgressEvent, New EventHandler(Of UploadProgressArgs)(AddressOf UploadRequest_UploadPartProgressEvent)
            Await fileTransferUtility.UploadAsync(fileTransferUtilityRequest)
        End If
    Catch ex As AmazonS3Exception
        MessageBox.Show(ex.Message + " Upload task canceled.")
    Catch ex As Exception
        MessageBox.Show(ex.Message + " Upload task canceled.")
    End Try
End Function

I have event handler in above code:

AddHandler fileTransferUtilityRequest.UploadProgressEvent, New EventHandler(Of UploadProgressArgs)(AddressOf UploadRequest_UploadPartProgressEvent)

and it does:

Public Function UploadRequest_UploadPartProgressEvent(ByVal sender As Object, ByVal e As UploadProgressArgs)
   ' here uploadprogressargs class has two variable which are having 
   ' totalbytes and transferedbytes(those are e.transferedbytes and e.totalbytes)
End Function

Now, my question is: how can I increase the ProgrssValue based on e.TransferredBytes?

I hope you all could be understood my question. I'm a beginner in .Net.

来源:https://stackoverflow.com/questions/61833424/async-await-eventhandler-return-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!