ホームページ >データベース >mysql チュートリアル >SQL Server にアクセスするマルチスレッド C# アプリケーションでデッドロックを効率的に処理するにはどうすればよいですか?
提供されたコードは、SQL Server データベース操作を実行するマルチスレッド C# アプリケーションを示しています。ただし、使用されるアプローチはパフォーマンスの問題やデッドロックを引き起こす可能性があります。この記事では、タスク並列ライブラリ (TPL) を活用し、デッドロック処理を含む、より効率的で堅牢な実装について説明します。
データベースの対話を伴うマルチスレッド アプリケーションを操作する場合、デッドロックは避けられない。それらを予測し、それらを効果的に処理するメカニズムを開発することが重要です。
次のアプローチを検討してください:
次のコードは、推奨されるアプローチを示しています。
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; } } }
潜在的なデッドロックに対処し、TPL を利用し、調査することによって代替戦略を使用すると、SQL Server データベースと対話するマルチスレッド C# アプリケーションのパフォーマンスと信頼性を強化できます。
以上がSQL Server にアクセスするマルチスレッド C# アプリケーションでデッドロックを効率的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。