转换/包装使用回调的“经典”异步方法的最佳方法是什么,该方法返回一个(可等待的)任务?
例如,给定以下方法:
public void GetStringFromUrl(string url, Action<string> onCompleted);
我知道将其包装到返回任务的方法中的唯一方法是:
public Task<string> GetStringFromUrl(string url)
{
var t = new TaskCompletionSource<string>();
GetStringFromUrl(url, s => t.TrySetResult(s));
return t.Task;
}
这是完成此任务的唯一方法吗?
并且有一种方法可以将对GetStringFromUrl(url,callback)的调用包装在任务本身中(即,调用本身将在任务内部运行而不是同步运行)
BeginXxx()
和EndXxx()
成对的。另外,您为什么要寻找其他方法来做到这一点?您希望获得什么?