sync method -> async await helper

tual
Дата: 13.06.2014 14:08:06
Не хочется изобретать велосипед
Есть самые разные методы (в основном работа с БД), сихнронные.
Типа:
Supplier supplier = _supplierRepository.Get(id);


Есть методы контроллеров в APIController.
Там везде async await.
Типа:
[ResponseType(typeof(Supplier))]
        public async Task<IHttpActionResult> GetSupplier(long id)
        {
            _supplierRepository.Get(id);
            Supplier supplier = await db.Suppliers.FindAsync(id);
            if (supplier == null)
            {
                return NotFound();
            }

            return Ok(supplier);
        }


Может кто подскажет, видел какие-то универсальные генерик хелперы для обертки синхронных методов в асинхронные, с Task ?
tual
Дата: 13.06.2014 14:26:12
 internal static Task<TResult> MakeMethodAsync<T, TResult>(Func<T, TResult> method, T param)
        {
            Task<TResult> task = new Task<TResult>(() => method(param));
            task.Start(); // Hot task (started task) should always be returned.
            return task;
        }


Supplier supplier = await MakeMethodAsync(_supplierRepository.Get, id);


Нормальный вариант, или может быть лучше ?
PS Не проверял, не запускал
pation
Дата: 16.06.2014 12:22:33
tual
Может кто подскажет, видел какие-то универсальные генерик хелперы для обертки синхронных методов в асинхронные, с Task ?

http://www.ss-pro.ru/doc/index?docID=TaskPlannerTechRef/Client_AsyncDataProcessing.htm