gpt4 book ai didi

vb.net - 在调用方法中不使用 Await 启动异步任务

转载 作者:行者123 更新时间:2023-12-01 07:27:48 41 4
gpt4 key购买 nike

具有长时间运行方法的窗口商店应用程序,我需要在应用程序启动时调用该方法,但我不需要等待它完成。我希望它作为后台任务运行。如果转到应用程序的某个部分(报告),那么我将检查并在必要时等待该任务。

Public Shared Async Function UpdateVehicleSummaries(p_vehicleID As Int32) As Task(Of Boolean)
Dim tempVehicle As Koolsoft.MARS.BusinessObjects.Vehicle

For Each tempVehicle In Vehicles
If p_vehicleID = 0 Or p_vehicleID = tempVehicle.VehicleID Then
UpdateVehicleStats(tempVehicle)
End If
Next

Return True

End Function

它是这样称呼的
Dim updateTask As Task(Of Boolean) = UpdateVehicleSummaries(0)

它没有 Await 调用,我收到警告说它将同步运行。我如何开始这样的事情并让它异步运行?我希望它在自己的线程/任务上运行而不阻塞接口(interface)线程。有任何想法吗?

谢谢!

最佳答案

您应该在 Task 内的函数中运行代码。然后您可以从中返回:

Public Shared Function UpdateVehicleSummaries(p_vehicleID As Int32) As Task(Of Boolean)

Return Task.Factory.StartNew(Of Boolean)(
Function()
Dim tempVehicle As Koolsoft.MARS.BusinessObjects.Vehicle

For Each tempVehicle In Vehicles
If p_vehicleID = 0 Or p_vehicleID = tempVehicle.VehicleID Then
UpdateVehicleStats(tempVehicle)
End If
Next

Return True
End Function)

End Function

然后,您可以按照您的建议调用您的函数:
Dim updateTask As Task(Of Boolean) = UpdateVehicleSummaries(0)

稍后您可以在需要结果时等待任务完成:
Dim result = Await updateTask

关于vb.net - 在调用方法中不使用 Await 启动异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14888984/

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