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

vb.net – 在调用方法中不使用Await启动异步任务,第1张

概述窗口商店应用程序具有我需要在应用程序启动调用的长时间运行方法,但我不需要等待它完成.我希望它作为后台任务运行.如果转到应用程序的某个部分(报告),那么我将检查并在必要时等待该任务. Public Shared Async Function UpdateVehicleSummaries(p_vehicleID As Int32) As Task(Of Boolean) Dim tempVe 窗口商店应用程序具有我需要在应用程序启动时调用的长时间运行方法,但我不需要等待它完成.我希望它作为后台任务运行.如果转到应用程序的某个部分(报告),那么我将检查并在必要时等待该任务.

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 TrueEnd Function

它被称为这样

Dim updateTask As Task(Of Boolean) = UpdateVehicleSummarIEs(0)

它没有Await调用,我得到它将同步运行的警告.我如何启动这样的东西并让它以异步方式运行?我希望它在自己的线程/任务上运行而不会阻塞接口线程.有任何想法吗?

感谢名单!

解决方法 你应该在你的函数中运行代码,然后你可以从它返回:

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启动异步任务全部内容,希望文章能够帮你解决vb.net – 在调用方法中不使用Await启动异步任务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1212896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存