Video: ConfigureAwait là gì?
2024 Tác giả: Lynn Donovan | [email protected]. Sửa đổi lần cuối: 2023-12-15 23:55
ConfigureAwait (sai) liên quan đến một nhiệm vụ đã được hoàn thành vào thời điểm nó được chờ đợi (điều này thực sự rất phổ biến), sau đó ConfigureAwait (false) sẽ vô nghĩa, vì chuỗi tiếp tục thực thi mã trong phương thức sau đó và vẫn trong cùng ngữ cảnh đã có trước đó.
Sau đó, người ta cũng có thể hỏi, việc sử dụng ConfigureAwait false là gì?
ConfigureAwait ( sai ) cấu hình tác vụ để phần tiếp tục sau thời gian chờ không phải chạy trong ngữ cảnh người gọi, do đó tránh được bất kỳ bế tắc nào có thể xảy ra.
Ngoài phần trên, SynchronizationContext là gì? SynchronizationContext là một đại diện của môi trường hiện tại mà mã của chúng tôi đang chạy. Nghĩa là, trong một chương trình không đồng bộ, khi chúng tôi ủy quyền một đơn vị công việc cho một chuỗi khác, chúng tôi nắm bắt môi trường hiện tại và lưu trữ nó trong một phiên bản của SynchronizationContext và đặt nó trên đối tượng Task.
Hãy cân nhắc kỹ điều này, việc sử dụng ConfigureAwait là gì?
Sử dụng ConfigureAwait (sai) để tránh bế tắc là một thực hành nguy hiểm. Bạn sẽ phải sử dụng ConfigureAwait (false) cho mọi chờ đợi trong quá trình đóng bắc cầu của tất cả các phương thức được gọi bởi mã chặn, bao gồm tất cả mã của bên thứ ba và thứ hai. Sử dụng ConfigureAwait (false) để tránh deadlock tốt nhất chỉ là hack).
GetAwaiter là gì?
GetAwaiter () phương thức, trả về một thể hiện có phương thức GetResult (). Khi được sử dụng trên một Tác vụ bị lỗi, GetResult () sẽ phổ biến ngoại lệ ban đầu (đây là cách “tác vụ chờ đợi;” thực hiện hành vi của nó). GetResult () vì nó bảo tồn các ngoại lệ của nhiệm vụ thay vì gói chúng trong một AggregateException.