1

我有一个类在其中异步使用 HttpWebRequest 并提供如下接口:

StartAsyncOperation(Action<TResult> onSuccess, Action<Exception> onError)

如果我将使用 HttpWebRequest.GetResponseAsync 重写这个类,我将获得什么好处,或者我可以像这里一样使用 TaskComplitionSource使用基于事件的异步模式上的任务并行库,它会好吗?

4

2 回答 2

2

假设您StartAsyncOperation确实使用了异步操作(例如BeginGetResponse/ EndGetResponse),那么重写它并没有太大的好处。

现在做一个TaskCompletionSource包装器很好。最终您可能会想要重写它以使用它,async因为多年后onSuccess/onError模式对于习惯于async.

于 2013-06-25T13:55:15.193 回答
0

如果您的代码遵循APM 模式 (BeginMethod / EndMethod),那么请TaskFactory.FromAsync立即使用。

我建议不要使用TaskFactory.FromAsync,而是将其包装在Async后缀方法中,该方法可以在将来由async/await替换其实现。这样,您可以根据需要重构代码,而不仅仅是为了async/await

于 2013-06-25T23:31:24.187 回答