Apabila bekerja dengan aplikasi berbilang benang yang melibatkan operasi pangkalan data SQL Server, kebuntuan merupakan cabaran yang tidak dapat dielakkan. Adalah penting untuk memahami punca kebuntuan dan melaksanakan strategi untuk meminimumkan kesannya.
Daripada melancarkan penyelesaian threading anda sendiri, pertimbangkan untuk memanfaatkan perpustakaan TaskParallel. Pendekatan ini membolehkan anda melaksanakan langkah berikut:
Berikut ialah contoh cara menggunakan perpustakaan TaskParallel dan pengendalian kebuntuan:
using (var dc = new TestDataContext()) { List<int> ids = dc.TestItems.Where(...).Select(item => item.Id).ToList(); List<ErrorType> problematicIds = new List<ErrorType>(); Parallel.ForEach(ids, new ParallelOptions { MaxDegreeOfParallelism = 8 }, id => CalculateDetails(id, problematicIds)); } private static void CalculateDetails(int id, List<ErrorType> problematicIds) { try { DeadlockRetryHelper.Execute(() => CalculateDetails(id)); } catch (Exception e) { problematicIds.Add(new ErrorType(id, e)); } }
Dalam kaedah CalculateDetails, anda boleh membalut operasi pangkalan data anda dalam pernyataan penggunaan dengan TransactionScope untuk mengawal tahap pengasingan transaksi dan mencuba semula operasi jika menemui jalan buntu berlaku.
Atas ialah kandungan terperinci Bagaimanakah Pustaka TaskParallel dalam C# Membantu Mencegah Kebuntuan dalam Aplikasi Pelayan SQL Berbilang benang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!