如何将指向变量的指针传递给 S3 进度函数回调?
How to pass a pointer to a variable to the S3 progress function callback?
我知道我可以使用与此类似的东西来监视对象下载的进度
using (var response = client.GetObject(request))
{
response.WriteObjectProgressEvent += Response_WriteObjectProgressEvent;
response.WriteResponseStreamToFile(@"C:\Downloads\file.exe");
}
private static void Response_WriteObjectProgressEvent(object sender, WriteObjectProgressArgs e)
{
Debug.WriteLine($"Transfered: {e.TransferredBytes}/{e.TotalBytes} - Progress: {e.PercentDone}%");
}
不过,我想保存到e.PercentDone值到一个特定的变量中。
如何将指向此变量的指针传递给回调函数?
谢谢
你说得对,当我的问题与 C++ 相关时,提供的示例是 C# 代码。
我终于通过传递定义为
的指针解决了我的问题
int *download_percentage;
以这种方式下载 ProgressCallback():
transferConfig.downloadProgressCallback =
[download_percentage](const Aws::Transfer::TransferManager *,
const std::shared_ptr<const Aws::Transfer::TransferHandle> &transferHandle) {
if (download_percentage != NULL) {
int percentage = *download_percentage;
if (percentage !=
((int)(((float)transferHandle->GetBytesTransferred() / transferHandle->GetBytesTotalSize()) *
100))) {
percentage =
(int)(((float)transferHandle->GetBytesTransferred() / transferHandle->GetBytesTotalSize()) *
100);
std::cout << "Download Progress: " << percentage << "%\n";
*download_percentage = percentage;
}
}
};
我知道我可以使用与此类似的东西来监视对象下载的进度
using (var response = client.GetObject(request))
{
response.WriteObjectProgressEvent += Response_WriteObjectProgressEvent;
response.WriteResponseStreamToFile(@"C:\Downloads\file.exe");
}
private static void Response_WriteObjectProgressEvent(object sender, WriteObjectProgressArgs e)
{
Debug.WriteLine($"Transfered: {e.TransferredBytes}/{e.TotalBytes} - Progress: {e.PercentDone}%");
}
不过,我想保存到e.PercentDone值到一个特定的变量中。
如何将指向此变量的指针传递给回调函数?
谢谢
你说得对,当我的问题与 C++ 相关时,提供的示例是 C# 代码。
我终于通过传递定义为
的指针解决了我的问题int *download_percentage;
以这种方式下载 ProgressCallback():
transferConfig.downloadProgressCallback =
[download_percentage](const Aws::Transfer::TransferManager *,
const std::shared_ptr<const Aws::Transfer::TransferHandle> &transferHandle) {
if (download_percentage != NULL) {
int percentage = *download_percentage;
if (percentage !=
((int)(((float)transferHandle->GetBytesTransferred() / transferHandle->GetBytesTotalSize()) *
100))) {
percentage =
(int)(((float)transferHandle->GetBytesTransferred() / transferHandle->GetBytesTotalSize()) *
100);
std::cout << "Download Progress: " << percentage << "%\n";
*download_percentage = percentage;
}
}
};