C# 如何使用输出参数实现azure异步函数

C# 如何使用输出参数实现azure异步函数,c#,azure,azure-functions,azure-cosmosdb,azure-blob-storage,C#,Azure,Azure Functions,Azure Cosmosdb,Azure Blob Storage,我实现了Azure函数 我有下一个案例: 当某物上传到blob时(输入blob为触发器) 过程逻辑 将某些内容保存到输出blob(输出为返回值) 将其他内容保存到dynamo db集合(输出参数) 将其他内容保存到另一个dynamo db集合(输出参数) 这很好用。问题在于我不能利用异步调用的优势。原因很清楚,因为带有输出参数的方法不能是异步方法 如何利用异步调用的优势实现具有多个输出的azure函数 谢谢我们可以在异步方法中使用 仅当成功的函数执行总是导致返回值传递到输出绑定时,才使用返回值

我实现了Azure函数

我有下一个案例:

  • 当某物上传到blob时(输入blob为触发器)
  • 过程逻辑
  • 将某些内容保存到输出blob(输出为返回值)
  • 将其他内容保存到dynamo db集合(输出参数)
  • 将其他内容保存到另一个dynamo db集合(输出参数)

  • 这很好用。问题在于我不能利用异步调用的优势。原因很清楚,因为带有输出参数的方法不能是异步方法

    如何利用异步调用的优势实现具有多个输出的azure函数

    谢谢

    我们可以在异步方法中使用

    仅当成功的函数执行总是导致返回值传递到输出绑定时,才使用返回值。否则,请使用ICollector或IAsyncCollector

    例如,将
    out dynamic processedSecond
    更改为
    IAsyncCollector processedFirst
    并使用
    wait processedFirst.AddAsync(someObject)稍后

    请参见的示例

    [FunctionName("myFunction")]
    [return: Blob("images-text-out/{name}.txt")]
    public static string Run([BlobTrigger("samples-workitems/{name}", Connection = "StorageConnection")]Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob myBlob,
         string name,
         string blobTrigger,
         [CosmosDB(
            databaseName: "my-db-cosmos",
            collectionName: "CollectionA",
            ConnectionStringSetting = "CosmosDBConnection")] out dynamic processedFirst,
         [CosmosDB(
            databaseName: "my-db-cosmos",
            collectionName: "CollectionB",
            ConnectionStringSetting = "CosmosDBConnection")] out dynamic processedSecond,
         ILogger log,
         ExecutionContext context)
    {
        // . . .
        myBlob.DownloadToStreamAsync(memoryStream).Wait();
        // . . .
    }