通常,在.net中註冊事件時,當不再需要對象以避免內存泄漏時,取消註冊它們是一種很好的做法。我應該從TransactionScope TransactionCompleted事件註銷嗎?
使用TransactionScope的TransactionCompleted事件是什麼情況?
考慮下面的代碼片段:
using (var scope = new TransactionScope(TransactionScopeOption.Required))
{
Transaction.Current.TransactionCompleted += OnTransactionCompleted;
// do something
scope.Complete();
}
展望時,我應該註銷「TransactionCompleted」事件,
如果我這樣做是在using語句的結束,這是保證該事件處理程序已執行?
其他選項是在事件處理程序本身取消註冊,但我不確定另一個TransactionScope在此之前不會啓動。
什麼時候提交TransactionCompleted事件?我可以肯定,當物鏡對象完成處置後它會被擡起嗎? (離開'使用'塊)
我沒有在MSDN document和source code中看到任何對此的引用。