Согласен. Было бы неплохо, если бы добавили асинхронку хотя бы в старом варианте, по типу BeginInvoke — EndInvoke.
P.S. Потенциал неплохой, я бы посоветовал портировать на WP8 и Xamarin, думаю, что будет популярно в Xamarin Store ;)
Самое забавное, что async отлично можно завести и на .NET 2.0, достаточно нужные классы из Mono вытащить и скомпилировать в dll-ку. У меня где-то ещё валялась версия такой библиотеки и для .NET 4, работающая без KB, требуемого решением от мелкомягких.
Если уж реализовывать современный api-клиент на .net, то с async, конечно. Но это моё личное мнение.
Так-то понятно, что для почесывания левой пятки по пятницам вполне ОК.
А в чем проблема использовать Task.StartNew(() => {...}).ContinueWith(t => {...})?
Можно свой или сторонний TaskHelper какой-то взять на вооружение. Через тот-же хелпер можно прикрутить стандартное логгирование ошибок.
Насколько я понял, в комментарии, на который я ответил, автор раздосадован, что не сможет задекорировать свой метод аттрибутами 'async — await'. Если я прав, то Ваш пример о том же, о чем я написал, а именно обойтись без сахара async-await и использовать TPL.
Насколько я понял, преимущество Вашего примера в том, что не занимается поток из Tread Pool. Я правильно понял?
Независимо от того, как реализован метод в библиотеке (с async или без) его результат можно await'ить в своем методе, если он возвращает Task.
Мой пример о том, что если метод в библиотеке реализует IAsyncResult паттерн, то эффективнее будет использовать Task.FromAsync, чем оборачивать синхронный метод в Task.StartNew.
А проблема в библиотеке в том, что, она не реализует ассинхронное API ни каким образом. Т.е. придется использовать Task.StartNew, что в свою очередь будет не так эффективно.
Да. Понятно.
Получается, если в Tread Pool имеется ограничение в 30 потоков, то невозможно будет даже при монопольном захвате пулла запустить больше 30 параллельных запросов IO/Web.
А почему без async и только .NET 3.5? По-моему мало актуально. Я для Meridian (https://github.com/Stealth2012/meridian) использую самописную Portable-библиотеку, которая поддерживает async и может использоваться в проектах NET4.5/WP8/Win8.
ВКонтакте API для .Net