Tôi có phương thức thực hiện cuộc gọi không đồng bộ với dịch vụ web. Một cái gì đó như thế:Nhận kết quả của phương thức không đồng bộ
public static async Task<ReturnResultClass> GetBasicResponseAsync()
{
var r = await SomeClass.StartAsyncOp();
return await OtherClass.ProcessAsync(r);
}
Và tôi muốn cung cấp thay thế đồng bộ:
public static ReturnResultClass GetBasicResponse()
{
return GetBasicResponseAsync().Result;
}
Nhưng nó khối trên Result
gọi. Bởi vì nó được gọi trên cùng một luồng như một hoạt động không đồng bộ. Làm thế nào tôi có thể nhận được kết quả đồng bộ?
Cảm ơn!
Cảm ơn! 'ConfigureAwait' có ảnh hưởng đến các ứng dụng không đồng bộ của lib của tôi không? Tôi có nghĩa là, sẽ hoạt động async ở lại async, hoặc họ sẽ được thực hiện trên thread khác cho tất cả khách hàng? – gor
Có, nó cũng sẽ ảnh hưởng đến khách hàng không đồng bộ, nhưng theo cách nào đó sẽ ổn. Các hoạt động async sẽ vẫn không đồng bộ, nó chỉ là phần tiếp tục của mã sử dụng 'ConfigureAwait()' sẽ không thực hiện trên luồng UI. Nhưng bất kỳ mã async nào trong các phương thức bắt đầu trên chuỗi giao diện người dùng sẽ vẫn ở đó (trừ khi bạn sử dụng 'ConfigureAwait()' ở đó cũng vậy). – svick