Brzmi jak doskonały przepis na delegatów - w szczególności połączenia zwrotne z delegatami są dokładnie takie, jak to jest obsługiwane w asynchronicznym wzorze w .NET.
Osoba dzwoniąca zwykle przekazuje ci pewien stan i delegata, i przechowujesz oba w dowolnym kontekście, a następnie dzwoni się do delegata przekazującego mu stan i wynik, jaki możesz mieć.
Można albo ustawić stan jako object
, albo potencjalnie użyć delegata ogólnego i przyjąć stan odpowiedniego typu, np.
public delegate void Callback<T>(T state, OperationResult result)
Następnie:
public void DoSomeOperation(int otherParameterForWhateverReason,
Callback<T> callback, T state)
Jak używasz .NET 3.5 możesz wykorzystać istniejące Func<...>
i Action<...>
typy delegata, ale może znaleźć to sprawia, że jaśniejsze zadeklarować Twój własny. (Nazwa może sprawić, że będzie bardziej przejrzysty dla tego, czego używasz).
Podejrzewam, że Twoja odpowiedź zawiera degates, wydarzenia lub jedno i drugie. Jednak po kilkakrotnym przeczytaniu twojego pytania nie jestem w stanie objąć głowy tym, o co prosisz. – Brian
Oto przykład http://blog.jerrynixon.com/2011/11/there-are-lots-of-things-that-take-long.html –