Tôi đang cố gắng tích hợp async/ awaitvào xe buýt dịch vụ của chúng tôi. Tôi đã triển khai SingleThreadSynchronizationContextdựa trên ví dụ này http://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspx .
Và nó hoạt động tốt, ngoại trừ một điều: TransactionScope. Tôi chờ đợi những thứ bên trong TransactionScopevà nó phá vỡ TransactionScope.
TransactionScopedường như không hoạt động tốt với async/ await, chắc chắn vì nó lưu trữ mọi thứ trong chuỗi sử dụng ThreadStaticAttribute. Tôi nhận được ngoại lệ này:
"TransactionScope được lồng không chính xác.".
Tôi đã cố gắng lưu TransactionScopedữ liệu trước khi xếp hàng nhiệm vụ và khôi phục nó trước khi chạy nó nhưng có vẻ như nó không thay đổi được gì. Và TransactionScopemã là một mớ hỗn độn, vì vậy thật khó hiểu chuyện gì đang xảy ra ở đó.
Có cách nào để làm cho nó hoạt động? Có một số thay thế cho TransactionScope?
SingleThreadSynchronizationContextcho mỗi cấp cao nhất TransactionScope.