Mam metodę transmisji asynchronicznej z następującym podpisem:Zbyt wiele argumentów w BeginXXX dla FromAsync?
IAsyncResult BeginGetMyNumber(string foo, string bar, string bat, int bam, AsyncCallback callback, object state)
Chcę wykonać go za pomocą Factory.FromAsync tak:
var result = Task<int>.Factory.FromAsync(
instance.BeginGetMyNumber,
instance.EndGetMyNumber,
"foo",
"bar",
"bat",
100, /*bam*/
null);
ale pojawia się następujący błąd:
Argument 1: cannot convert from 'method group' to 'System.Func'
Wygląda na to, że nie ma odpowiedniej przeciążonej metody FromAsync http://msdn.microsoft.com/en-us/library/system.threading.tasks.taskfactory.fromasync.aspx, obsługuje ona tylko do 5 argumentów (w tym wywołania zwrotnego i stanu) Metoda BeginXXX.
Inaczej niż refaktoryzacja metody BeginXXX w celu pobrania obiektu, a nie sześciu argumentów, czy istnieje sposób na wykonanie tego przy pomocy FromAsync?
Po tym przeciążeniu 'FromAsync' nie otrzyma szansy na przekazanie wywołania zwrotnego do metody' BeginGetMyNumber' - już przekazałeś wartość null. Zamiast tego to przeciążenie użyje 'IAsyncResult.WaitHandle' do powiadomienia, gdy operacja zostanie zakończona. Jest to mniej efektywne - więcej informacji można znaleźć na stronie http://blogs.msdn.com/b/pfxteam/archive/2012/02/06/10264610.aspx. – Daniel
Działa dla czterech parametrów, ale mam pięć parametrów same nie działa dla mojego przypadku. Co powinienem zrobić ? –