У меня есть метод асинхронной со следующей подписью:Слишком много аргументов в BeginXXX для FromAsync?
IAsyncResult BeginGetMyNumber(string foo, string bar, string bat, int bam, AsyncCallback callback, object state)
Я хочу, чтобы выполнить его, используя Factory.FromAsync как это:
var result = Task<int>.Factory.FromAsync(
instance.BeginGetMyNumber,
instance.EndGetMyNumber,
"foo",
"bar",
"bat",
100, /*bam*/
null);
, но я получаю следующее сообщение об ошибке:
Argument 1: cannot convert from 'method group' to 'System.Func'
Кажется, нет подходящего перегруженного метода FromAsync http://msdn.microsoft.com/en-us/library/system.threading.tasks.taskfactory.fromasync.aspx, он поддерживает только до 5 аргументов (включая обратный вызов и состояние) на Метод BeginXXX.
Помимо рефакторинга метода BeginXXX, чтобы взять объект, а не шесть аргументов, есть ли способ выполнить его с помощью FromAsync?
С этой перегрузкой «FromAsync» не получает возможность передать обратный вызов вашему методу «BeginGetMyNumber» - вы уже прошли null. Вместо этого эта перегрузка будет использовать 'IAsyncResult.WaitHandle' для уведомления о завершении операции. Это менее эффективно - подробнее см. Http://blogs.msdn.com/b/pfxteam/archive/2012/02/06/10264610.aspx. – Daniel
Он работает для четырех параметров, но у меня есть пять параметров, которые не работают для моего случая. Что мне делать ? –