2

Hier ist meine Aktionsmethode löschen einen Benutzer zu löschen: ich fühle mich wie blockiert, da ich user.Result bin mit dem tatsächlichen Benutzerobjekt von einer Asynchron passieren Ergebnis zur nächsten asynchronen Methode. Gibt es einen besseren Weg, dies zu tun?Aktion Methode einen Benutzer mit ASP.NET Identität 3.x

// POST: Users/Delete/5 
[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public async Task<IActionResult> DeleteConfirmed(int id) 
{ 
    var user = _userManager.FindByIdAsync(id.ToString()); 
    var result = await _userManager.DeleteAsync(user.Result); 
    return RedirectToAction("Index"); 
} 

Antwort

2

Sie haben Recht. Die Verwendung der user.Result, um das tatsächliche Objekt zu übergeben, blockiert die asynchrone Methode.

Best Practice bei der Verwendung async ist await den ganzen Weg durch die Methode zu verwenden. Nicht mischen und asynchronen Code.

// POST: Users/Delete/5 
[HttpPost, ActionName("Delete")] 
[ValidateAntiForgeryToken] 
public async Task<IActionResult> DeleteConfirmed(int id) { 
    var user = await _userManager.FindByIdAsync(id.ToString()); 
    var result = await _userManager.DeleteAsync(user); 
    return RedirectToAction("Index"); 
} 

Quelle - Async/Await - Best Practices in Asynchronous Programming

Verwandte Themen