J'essaie d'envelopper ma tête autour de l'appel asynchrone des méthodes.Comment appeler une méthode de manière asynchrone? Dois-je créer une classe dérivée de IAsyncResult?
public IDictionary<string, int> DoSomething(string startsWith)
{
return new Dictionary<string, int>();
}
public IAsyncResult BeginDoSomething(string startsWith, AsyncCallback callback,
object state)
{
return new Func<string, IDictionary<string, int>>(DoSomething)
.BeginInvoke(startsWith, callback, state);
}
public IDictionary<string, int> EndDoSomething(IAsyncResult result)
{
// How to return the IDictionary?!
}
Mon problème est que je n'ai aucune idée de comment obtenir l'IDictionary dans la méthode EndDoSomething. J'ai googlé et j'ai vu que certaines personnes utilisaient l'état et le callback, alors que d'autres créaient leur propre classe dérivée de IAsyncResult, la renvoyaient de Begin et l'invoquaient dans End.
Est-ce vraiment la bonne façon de le faire? Ou quelle serait la bonne façon?
Oui, cela semble mieux que BeginInvoke avec un délégué. –