在 DB Transaction 使用到 Async 的注意事項
現在使用 Async 這種非同步寫法算是家常便飯了,但某些時候會遇到問題,像是 transaction,主要的問題是 Async 會切換執行緒,但在 transaction 中遇到執行緒的切換時會出錯(正確來說是偵測到執行緒不同條),解法也很簡單,就是加個參數就好,範例如下:
using (TransactionScope tran = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
await AsyncWorker1();
await AsyncWorker2();
await AsyncWorker3();
}
這樣問題就解決了。
參考資料