Який найкращий спосіб перетворити / обернути "класичний" асинхронний метод, який використовує зворотний виклик до чогось, що повертає (очікуване) завдання?
Наприклад, враховуючи такий спосіб:
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, зворотний виклик) у самому завданні (тобто сам виклик буде виконуватися всередині завдання, а не синхронно)
BeginXxx()
іEndXxx()
пари. Крім того, чому ви шукаєте інші способи зробити це? Що ви сподіваєтесь отримати?