gpt4 book ai didi

c# - 如何将委托(delegate)函数转换为内联等待

转载 作者:行者123 更新时间:2023-11-30 19:58:57 28 4
gpt4 key购买 nike

我正在使用标准函数将文件异步上传到 Azure blob 存储,但是我唯一可用的方法是使用委托(delegate)将控制权传递给第二个函数。但是我需要第一个函数的返回值(最好使用 await)。

我怎样才能等待结果并因此返回第一个函数中的值?我可以等待委托(delegate)功能吗?我想返回 blob.uri

代码如下:

      private Uri uploadImageFileToContainer(byte[] fileContent, string containerName, string blobName)
{
CloudBlobClient blobClient = myAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExist();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);

// see: http://www.c-sharpcorner.com/UploadFile/40e97e/windows-azure-blockblob-putblock-method/ for details

HashSet<string> blocklist = new HashSet<string>();
foreach (FileBlock block in GetFileBlocks(fileContent))
{
blockBlob.PutBlock(
block.Id,
new MemoryStream(block.Content, true),
null
);
blocklist.Add(block.Id);
}
**AsyncCallback UploadCompleted = new AsyncCallback(OnUploadCompleted);
blockBlob.BeginPutBlockList(blocklist, OnUploadCompleted, blockBlob);**


}

private void OnUploadCompleted(IAsyncResult result)
{
CloudBlockBlob blob = (CloudBlockBlob)result.AsyncState;
blob.SetMetadata();
blob.EndPutBlockList(result );
}

最佳答案

在最新版本的 Azure 存储客户端库中,所有 API 都有相应的返回任务的异步重载。例如,请引用CloudBlockBlob.PutBlockListAsync .

关于c# - 如何将委托(delegate)函数转换为内联等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25393935/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com