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