Suona come una ricetta perfetta per i delegati - in particolare, i callback con i delegati sono esattamente come questo viene gestito nel modello asincrono in .NET.
Il chiamante di solito ti passa qualche stato e un delegato, e li memorizzi entrambi in qualsiasi contesto tu abbia, quindi chiama il delegato passandogli lo stato e qualsiasi risultato tu possa avere.
È possibile creare lo stato solo object
o potenzialmente utilizzare un delegato generico e assumere lo stato del tipo appropriato, ad es.
public delegate void Callback<T>(T state, OperationResult result)
Poi:
public void DoSomeOperation(int otherParameterForWhateverReason,
Callback<T> callback, T state)
Come stai usando .NET 3.5 si potrebbe desiderare di utilizzare le Func<...>
e Action<...>
tipi di delega esistente, ma si può trovare lo rende più chiaro per dichiarare il tuo. (Il nome potrebbe rendere più chiaro il motivo per cui lo stai utilizzando.)
fonte
2009-03-20 20:05:58
Sospetto che la risposta contenga gradi, eventi o entrambi. Tuttavia, dopo aver letto la tua domanda un paio di volte, non sono in grado di comprendere ciò che stai chiedendo. – Brian
Ecco un esempio http://blog.jerrynixon.com/2011/11/there-are-lots-of-things-that-take-long.html –