Каков рекомендуемый способ добавления постусловий в асинхронные методы, возвращающие Задача
?
Я прочитал следующее предложение:
http://social.msdn.microsoft.com/Forums/hu-HU/async/thread/52fc521c-473e-4bb2- a666-6c97a4dd3a39
В сообщении предлагается реализовать каждый метод как синхронный, заключить его в контракт, а затем реализовать асинхронный аналог в виде простой оболочки. К сожалению, я не вижу в этом работоспособного решения (возможно, из-за моего собственного недоразумения):
await
, в других асинхронных методах, следовательно, принудительно должна быть асинхронной. Эти методы по своей сути асинхронны и не могут быть легко преобразованы в синхронные. Это не просто обертки. Даже если мы опровергли последний пункт, сказав, что можем использовать .Result
или .Wait ()
вместо await
(что на самом деле вызовет некоторые SyncContext
в тупик, и его все равно придется переписывать в методе async), я все еще убежден в первом пункте.
Есть ли какие-нибудь альтернативные идеи или есть что-то, что я пропустил по поводу кодовых контрактов и TPL?