vb.net相当于c#中的wait foreach



C#中的VB.net等效于await foreach是什么?

根据我发现VB.net的For Each不能使用Await运算符(Await运算符(Visual Basic((

例如,这个C#示例将如何转换为VB.net(使用Azure存储客户端库列出Blob(?

private static async Task ListBlobsFlatListing(BlobContainerClient blobContainerClient, 
int? segmentSize)
{
try
{
// Call the listing operation and return pages of the specified size.
var resultSegment = blobContainerClient.GetBlobsAsync()
.AsPages(default, segmentSize);
// Enumerate the blobs returned for each page.
await foreach (Azure.Page<BlobItem> blobPage in resultSegment)
{
foreach (BlobItem blobItem in blobPage.Values)
{
Console.WriteLine("Blob name: {0}", blobItem.Name);
}
Console.WriteLine();
}
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
throw;
}
}

您可能需要编写For Each转换成的等效代码。对于常规(同步(For Each环路:

For Each item In Sequence
'Do whatever with item
Next

相当于:

Dim iterator = Sequence.GetEnumerator()
Do While iterator.MoveNext()
Dim item = iterator.Current
'Do whatever with item
End Do

我希望异步枚举的转换本质上是相同的。

Dim iterator As IAsyncEnumerator(Of Object) 'Or appropriate type
Try
iterator = AsyncSequence.GetAsyncEnumerator()
Do While Await iterator.MoveNextAsync()
Dim item = iterator.Current
'Do whatever with item
End Do
Finally
Await iterator.DisposeAsync()
End Try

它不像你可以写Await For Each(并有适当的Using支持(那么干净,但也不太远

最新更新