Cho phép nói rằng tôi chỉ muốn một phương thức chạy trong async
.Sử dụng async theo phương pháp không đồng bộ
Vì vậy, tôi có một phương pháp async
như dưới đây:
public async Task Load(){
Task task1 = GetAsync(1);
Task task2 = GetAsync(2);
Task task3 = GetAsync(3);
var data1 = await task1; // <--Freezes here when called from GetSomethingElse()
var data2 = await task2;
var data3 = await task3;
..process data..
}
Và sau đó tôi đang cố gắng để gọi đó là async
phương pháp trong phương pháp khác như một nhiệm vụ, và muốn cho nó phải đợi cho đến khi đoạn cụ thể của Mã số async
được thực hiện. Vấn đề là nó không phải. Khi nó đạt đến await
đầu tiên trong Load()
nó chỉ không hoàn thành tải. Trình gỡ lỗi bị trống và không đưa ra lỗi nào khác.
Phương thức async
có thể được gọi từ phương thức không async
, như thế này không? Có một lý do tôi không cần nhiệm vụ cụ thể này là async
, nhưng chức năng Load()
tôi làm.
public void GetSomethingElse(){
var task1 = Load().Wait();
}
Làm cách nào có thể?
tôi đã cố gắng thậm chí thay đổi phương pháp Load()
sử dụng var data = task1.Wait()
vv thay vì await
, vẫn có sự khác biệt, không có vấn đề mà cách tôi cố gắng. Nếu bất cứ ai có thể giúp nó sẽ được đánh giá cao.
thử: 'var data1 = await Task.Run (() => GetAsync (1));' –
http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638. aspx –
@JohnWoo Tôi đã thử 'var data1 = task1.Wait();' sẽ làm nó theo cách của bạn là bất kỳ khác nhau? –