2
将基于回调的异步方法转换为可等待任务的最佳方法
转换/包装使用回调的“经典”异步方法的最佳方法是什么,该方法返回一个(可等待的)任务? 例如,给定以下方法: 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)的调用包装在任务本身中(即,调用本身将在任务内部运行而不是同步运行)