Het is handig om de basisprincipes van async
te begrijpen / await
omdat het een wat lekkende abstractie is en een aantal valkuilen heeft.
In wezen heb je twee opties:
-
Blijf synchroon. In dit geval is het veilig om
.Result
. te gebruiken en.Wait()
op de asynchrone oproepen, b.v. zoiets als// Insert: collection.InsertOneAsync(user).Wait(); // FindAll: var first = collection.Find(p => true).ToListAsync().Result.FirstOrDefault();
-
Ga async in je codebase. Async doen is helaas nogal 'besmettelijk', dus ofwel converteer je vrijwel alles naar async, of niet. Voorzichtig, het onjuist mengen van sync en async leidt tot impasses . Het gebruik van async heeft een aantal voordelen, omdat uw code kan blijven draaien terwijl MongoDB nog werkt, bijvoorbeeld
// FindAll: var task = collection.Find(p => true).ToListAsync(); // ...do something else that takes time, be it CPU or I/O bound // in parallel to the running request. If there's nothing else to // do, you just freed up a thread that can be used to serve another // customer... // once you need the results from mongo: var list = await task;