2013-01-04 39 views
33

Tôi luôn muốn thử sử dụng TransactionScope nhưng tôi không thể tìm ra những gì mọi người thấy về nó hữu ích. Vì vậy, chúng ta hãy lấy một ví dụ:Cách sử dụng TransactionScope đúng cách?

using(TransactionScope tran = new TransactionScope()) { 
    CallAMethodThatDoesSomeWork1(); 
    CallAMethodThatDoesSomeWork2(); 
    tran.Complete(); 
} 

Vậy câu hỏi cơ bản nhất: Làm thế nào để viết "CallAMethodThatDoesSomeWork1()" vì vậy mà nó biết làm thế nào để cuộn hành động của mình trở lại nếu chúng ta hãy nói "CallAMethodThatDoesSomeWork2()" ném một ngoại lệ?

+2

Có, đó là câu hỏi cơ bản –

+3

trùng lặp của http://stackoverflow.com/questions/5265841/how-to-create-a-class-that-works-with- giao tiếp? rq = 1? – Fabske

+1

@ Fabske - không có câu trả lời ở đó – Denis

Trả lời

20

Mã trong các phương thức bạn gọi cần phải là giao dịch nhận biết và tham gia vào giao dịch đang hoạt động. Điều này có nghĩa là tạo hoặc sử dụng các lớp học là những người quản lý tài nguyên (xem Implement Your Own Resource Manager.

Bạn làm điều này bằng cách thực hiện IEnlistmentNotification và tham gia vào giao dịch đó để giao dịch của bạn mã có thể thực hiện/hoàn tác tác phẩm

+0

Ồ, tôi thấy làm thế nào để làm điều đó.Xin trang MSDN cho "TransactionScope" cho biết nó - được nhìn vào nó và hoàn toàn không bao giờ nhìn thấy điểm của TransactionScope. Đây là giao diện ma thuật Để làm cho nó hoạt động. Điều này thật ý nghĩa! – Denis

Các vấn đề liên quan