first advice it certainly won’t change the problem but it will be a bit better in your case, to make async function for each pool , not let them in the async Task OnTick.
It’s about optimization, each pool will have different amount of object and different action on them, so you don’t want your code to wait each pool to finish for acting on the next , or you don’t want your different pool slowing to much the script.
so i would advice you to make 3 async function , you trigger them by the OnTick of course.
about your problem, first thing to check is size of the poolVehicle , is it fill with vehicles, are the vehicles inside not null and exist ?
second things to check is the action you make on the vehicle and for that i can’t help you wihout the code , be sure the code is executed , ( use Debug.WriteLine(“my debug text”); in your code for check in the consol if it executed or not )