使用Task异步方法包装回调异步方法的缺陷?

时间:2012-08-23 02:38:46

标签: c# asynchronous task-parallel-library async-await c#-5.0

我正在为我的WPF应用程序创建一个服务层,它将包装一个使用Action<T>回调的Web API客户端,用于它的异步方法。因为我还是需要包装方法,所以我正在考虑使我的服务层的包装器方法符合基于Task的新的.NET 4.5异步模式,而不是公开Action<T>回调。

我目前并不急需基于Task的异步,但我也没有任何理由认为我必须继续使用回调并且包装似乎很容易(如所述{{ 3}})向后兼容性不是问题。也就是说,如果对任务包装的Action<T>回调有任何陷阱,我只会维持现状。

1 个答案:

答案 0 :(得分:3)

我没有看到这样做的任何陷阱,实际上它会打开你的应用程序来分配更灵活的场景。我建议您也考虑将一些“回调”场景转换为观察者模式(参见Microsoft的Reactive Extensions项目),当与基于任务的模式结合使用时,它更加强大和灵活。当然,您将能够在C#5.0中使用新的基于任务的模式和新的async / await-pattern!

希望它有所帮助。