面试题答案
一键面试在Visual Basic中,可以使用Task.WhenAll
方法来确保在所有异步任务完成后执行后续操作。以下是具体代码示例:
Imports System.Threading.Tasks
Module Module1
Sub Main()
Dim tasks As New List(Of Task)()
'添加多个异步任务
tasks.Add(Task.Run(Sub() DoAsyncTask1()))
tasks.Add(Task.Run(Sub() DoAsyncTask2()))
Try
'等待所有任务完成
Task.WhenAll(tasks).Wait()
Console.WriteLine("所有任务已完成")
Catch ex As AggregateException
'处理任务执行过程中的异常
For Each innerEx In ex.InnerExceptions
Console.WriteLine($"任务执行出错: {innerEx.Message}")
Next
End Try
End Sub
Async Function DoAsyncTask1() As Task
'模拟异步操作
Await Task.Delay(2000)
Console.WriteLine("任务1完成")
End Function
Async Function DoAsyncTask2() As Task
'模拟异步操作
Await Task.Delay(3000)
Console.WriteLine("任务2完成")
End Function
End Module
代码说明
- 创建任务列表:使用
List(Of Task)
来存储多个异步任务。 - 添加任务:通过
Task.Run
方法将异步操作包装成任务,并添加到任务列表中。 - 等待所有任务完成:使用
Task.WhenAll(tasks).Wait()
等待所有任务完成。如果有任何任务抛出异常,Wait
方法会捕获并包装成AggregateException
。 - 异常处理:在
Try - Catch
块中捕获AggregateException
,并遍历InnerExceptions
属性来处理每个任务抛出的异常。
这样就可以确保在所有异步任务完成后执行后续操作,并处理任务执行过程中的异常。