Cách tốt nhất để chuyển đổi / bọc một phương thức không đồng bộ "cổ điển" sử dụng lệnh gọi lại một thứ gì đó trả về một Nhiệm vụ (có thể chờ đợi) là gì?
Ví dụ: đưa ra phương pháp sau:
public void GetStringFromUrl(string url, Action<string> onCompleted);
Cách duy nhất tôi biết để gói điều này thành một phương thức trả về một tác vụ là:
public Task<string> GetStringFromUrl(string url)
{
var t = new TaskCompletionSource<string>();
GetStringFromUrl(url, s => t.TrySetResult(s));
return t.Task;
}
Đây có phải là cách duy nhất để đạt được điều này?
Và có cách nào để gói lời gọi đến GetStringFromUrl (url, gọi lại) trong chính tác vụ (tức là chính cuộc gọi sẽ chạy bên trong tác vụ thay vì đồng bộ)
BeginXxx()
vàEndXxx()
cặp. Ngoài ra, tại sao bạn đang tìm kiếm những cách khác để làm điều này? Bạn đang hy vọng đạt được gì?