so like:
var cars = db.getcarsasync(); var dogs = db.getdogsasync(); var cats = db.getcatsasync(); await task.whenall(cars , dogs , cats); simple enough, how make sure maximize async ability dependencies:
var vet = await db.getvetasync(id); var validdogtypeids = vet.dogtypes.select(d => d.id).tolist(); var validcattypeids = vet.cattypes.select(d => d.id).tolist(); var cars = db.getcarsasync(); var dogs = db.getdogsasync(validdogtypeids); var cats = db.getcatsasync(validcattypeids); await task.whenall(cars , dogs , cats); because operations require vet finish, database operations on hold, not ones requiring result.
(this example, please ignore fact simple relationships solve problem).
you can stop "vet" task blocking "car" task instantiating both tasks (which - in async context - start them) before await either of them:
var vettask = db.getvetasync(id); var cartask = db.getcarsasync(); var vet = await vettask; var validdogtypeids = vet.dogtypes.select(d => d.id).tolist(); var validcattypeids = vet.cattypes.select(d => d.id).tolist(); var dogs = db.getdogsasync(validdogtypeids); var cats = db.getcatsasync(validcattypeids); await task.whenall(cartask , dogs , cats); car , vettask run concurrently vettask awaited before dogs , cats started.
Comments
Post a Comment