Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengendalikan Kebuntuan dengan Cekap dalam Aplikasi C# Berbilang Benang Mengakses Pelayan SQL?
Kod yang disediakan mempamerkan aplikasi C# berbilang benang yang menjalankan operasi pangkalan data SQL Server. Walau bagaimanapun, pendekatan yang digunakan boleh membawa kepada isu prestasi dan kebuntuan. Artikel ini meneroka pelaksanaan yang lebih cekap dan mantap yang memanfaatkan Pustaka Selari Tugas (TPL) dan termasuk pengendalian jalan buntu.
Apabila bekerja dengan aplikasi berbilang benang yang melibatkan interaksi pangkalan data, kebuntuan adalah tidak dapat dielakkan. Adalah penting untuk menjangkanya dan membangunkan mekanisme untuk mengendalikannya dengan berkesan.
Pertimbangkan pendekatan berikut:
Kod berikut menunjukkan pendekatan yang disyorkan:
using System.Threading.Tasks; using System.Transactions; using System.Linq; using Microsoft.Data.SqlClient; public class MultiThreadingImproved { public static void Main(string[] args) { var ids = new int[] { 1, 2, 3, 4, 5 }; var errors = new List<ErrorType>(); Parallel.ForEach(ids, id => { try { CalculateDetails(id); } catch (Exception ex) { errors.Add(new ErrorType(id, ex)); } }); } public static void CalculateDetails(int id) { using (var db = new SqlConnection("connection string")) { db.Open(); using (var txScope = new TransactionScope( TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) { // Query and update operations db.SubmitChanges(); txScope.Complete(); } } } public class ErrorType { public int Id { get; set; } public Exception Exception { get; set; } public ErrorType(int id, Exception ex) { Id = id; Exception = ex; } } }
Dengan menangani kemungkinan kebuntuan, menggunakan TPL, dan meneroka alternatif strategi, anda boleh meningkatkan prestasi dan kebolehpercayaan aplikasi C# berbilang benang anda yang berinteraksi dengan pangkalan data SQL Server.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Kebuntuan dengan Cekap dalam Aplikasi C# Berbilang Benang Mengakses Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!