Я создаю приложение для загрузки в C #, которое загружает файлы из хранилища Amazon AWS S3.Я могу загрузить файл без проблем, но я пытаюсь создать событие прогресса.
Чтобы создать событие, я использую следующий код в функции загрузки:
Application.DoEvents();
response2.WriteObjectProgressEvent += displayProgress;
Application.DoEvents();
Обработчик события, который я создал, выглядит следующим образом:
private void displayProgress(object sender, WriteObjectProgressArgs args)
{
// Counter for Event runs
label7.BeginInvoke(new Action(() => label7.Text = (Convert.ToInt32(label7.Text)+1).ToString()));
Application.DoEvents();
// transferred bytes
label4.BeginInvoke(new Action(() => label4.Text = args.TransferredBytes.ToString()));
Application.DoEvents();
// progress bar
progressBar1.BeginInvoke(new Action(() => progressBar1.Value = args.PercentDone));
Application.DoEvents();
}
Проблемазаключается в том, что он обновляется только при загрузке файла, но событие запускается чаще.Когда я загружаю последний файл (12MB);lable7 (счетчик событий) переходит с 3 на 121, поэтому я знаю, что он работает, но просто не обновляется.
Я также пробовал просто «стандартный» Invoke, но у меня был тот же результат.
Дополнительный код функции:
AmazonS3Config S3Config = new AmazonS3Config
{
ServiceURL = "https://s3.amazonaws.com"
};
var s3Client = new AmazonS3Client(stuff, stuff, S3Config);
ListBucketsResponse response = s3Client.ListBuckets();
GetObjectRequest request = new GetObjectRequest();
request.BucketName = "dr-test";
request.Key = locationoffile[currentdownload];
GetObjectResponse response2 = s3Client.GetObject(request);
response2.WriteObjectProgressEvent += displayProgress;
string pathlocation = Path.GetDirectoryName(Directory.GetCurrentDirectory()) + "\\" + Instrument[currentdownload] + "\\" + NewFileName[currentdownload];
response2.WriteResponseStreamToFile(pathlocation);