Cela ressemble à une recette parfaite pour les délégués - en particulier, les rappels avec les délégués sont exactement comment cela est géré dans le modèle asynchrone dans .NET. L'appelant vous passerait habituellement un certain état et un délégué, et vous les stockez dans n'importe quel contexte, puis appelez le délégué en lui passant l'état et quel que soit le résultat que vous pourriez avoir.
Vous pouvez soit rendre l'état juste object
ou potentiellement utiliser un délégué générique et prendre l'état du type approprié, par ex.
public delegate void Callback<T>(T state, OperationResult result)
Puis:
public void DoSomeOperation(int otherParameterForWhateverReason,
Callback<T> callback, T state)
Comme vous utilisez .NET 3.5, vous pouvez utiliser les Func<...>
existants et Action<...>
types de délégués, mais vous pouvez trouver le rend plus clair de déclarer le tien. (Le nom peut rendre plus clair ce pour quoi vous l'utilisez.)
Je suppose que votre réponse contient des événements, des événements ou les deux. Cependant, après avoir lu votre question plusieurs fois, je suis incapable de comprendre ce que vous me demandez. – Brian
Voici un exemple http://blog.jerrynixon.com/2011/11/there-are-lots-of-things-that-take-long.html –