我正在为我的WPF应用程序创建一个服务层,它将包装一个使用Action<T>
回调的Web API客户端,用于它的异步方法。因为我还是需要包装方法,所以我正在考虑使我的服务层的包装器方法符合基于Task
的新的.NET 4.5异步模式,而不是公开Action<T>
回调。
我目前并不急需基于Task
的异步,但我也没有任何理由认为我必须继续使用回调并且包装似乎很容易(如所述{{ 3}})向后兼容性不是问题。也就是说,如果对任务包装的Action<T>
回调有任何陷阱,我只会维持现状。
答案 0 :(得分:3)
我没有看到这样做的任何陷阱,实际上它会打开你的应用程序来分配更灵活的场景。我建议您也考虑将一些“回调”场景转换为观察者模式(参见Microsoft的Reactive Extensions项目),当与基于任务的模式结合使用时,它更加强大和灵活。当然,您将能够在C#5.0中使用新的基于任务的模式和新的async / await-pattern!
希望它有所帮助。