Start Async Task without using Await in called method
multitasking, vb.net, windows-runtime, windows-store
Solution
You should run the code in your function inside a `Task` which you can then return from it:
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
You can then call your function as you suggested:
Dim updateTask As Task(Of Boolean) = UpdateVehicleSummaries(0)
Later on you can await the task to complete when you need the result:
Dim result = Await updateTask
Problem
Window store app that has a long running method that I need to call when the application starts up, but I don't need to wait on it to complete. I want it to run as a background task. If the go to a certain part of the application (reporting), then I will check and if necessary wait on the task. ``` 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 ``` It is called like this ``` Dim updateTask As Task(Of Boolean) = UpdateVehicleSummaries(0) ``` It has no Await call in it and I get the warning that it will run synchronously. How do I start something like this and have it run asynchronously? I want it to run on its own thread/task without blocking the interface thread. Any ideas? Thanx!