Suena como una receta perfecta para los delegados, en particular, las devoluciones de llamada con delegados son exactamente cómo se maneja esto en el patrón asincrónico en .NET.
La persona que llama normalmente le pasará un estado y un delegado, y los almacena en el contexto que tenga, luego llama al delegado pasándole el estado y cualquier resultado que pueda tener.
Puede hacer el estado simplemente object
o utilizar un delegado genérico y tomar el estado del tipo apropiado, p. Ej.
public delegate void Callback<T>(T state, OperationResult result)
continuación:
public void DoSomeOperation(int otherParameterForWhateverReason,
Callback<T> callback, T state)
Como usted está utilizando .NET 3.5 es posible que desee utilizar los Func<...>
y Action<...>
tipos de delegado existentes, pero se puede encontrar que hace que sea más claro para declarar tu propio. (El nombre puede aclarar para qué lo está usando).
Sospecho que su respuesta contiene degates, eventos o ambos. Sin embargo, después de leer tu pregunta un par de veces, no puedo entender lo que estás preguntando. – Brian
Aquí hay una muestra http://blog.jerrynixon.com/2011/11/there-are-lots-of-things-that-take-long.html –