J'essaie d'utiliser async du futur asp.net mvc, en utilisant mon propre délégué asynchrone. Je n'ai pas compris comment le faire fonctionner. Voici le code:MVC futures async avec un délégué personnalisé
public delegate String GetString();
public String getHello() { return "Hello"; }
public IAsyncResult BeginHello(AsyncCallback cb, Object state)
{
GetString dlgt = getHello;
return dlgt.BeginInvoke(cb, state);
}
public ActionResult EndHello(IAsyncResult asyncResult)
{
return View();
}
En EndHello, asyncResult.IsCompleted = True, mais asyncResult.AsyncState == null. Je m'attendais à avoir AsyncState == "Bonjour".
Qu'est-ce qui me manque?
Aussi, est-il même logique de l'organiser de cette façon? Ou est-ce que cela l'amène à utiliser le même pool de threads de toute façon? Fondamentalement, ma pensée était de mettre un lecteur de données dans ma fonction asynchrone, pensant que je pourrais faire une boucle sur le lecteur remplissant une collection d'objets et ne reviendra que quand ils sont terminés. Est-il préférable d'utiliser BeginExecuteReader et de remplir les objets sur le thread principal?
EDIT: Pour quiconque lit ceci plus tard, c'est en fait la mauvaise façon de le faire, et ne vous aidera pas du tout. BeginExecuteReader est le chemin à parcourir.
Merci! Maintenant j'ai juste besoin de faire des tests avec wcat et voir si c'est vraiment une bonne idée :) – DennisP