Tôi đang cố gắng tích hợp async
/ await
vào xe buýt dịch vụ của chúng tôi. Tôi đã triển khai SingleThreadSynchronizationContext
dự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 TransactionScope
và nó phá vỡ TransactionScope
.
TransactionScope
dườ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 TransactionScope
dữ 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à TransactionScope
mã 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
?
SingleThreadSynchronizationContext
cho mỗi cấp cao nhất TransactionScope
.