C#でのデータベースへの並行アクセスをどのように実装するか。
C#では、複数のスレッドでデータベースに並行アクセスするためにTaskとasync/awaitキーワードを使用することができます。以下は簡単なサンプルコードです:
using System;
using System.Threading.Tasks;
using System.Data.SqlClient;
class Program
{
static async Task Main(string[] args)
{
string connString = "YOUR_CONNECTION_STRING";
// 创建多个并发任务
Task task1 = AccessDatabase(connString, "Task 1");
Task task2 = AccessDatabase(connString, "Task 2");
// 等待所有任务完成
await Task.WhenAll(task1, task2);
Console.WriteLine("All tasks completed!");
}
static async Task AccessDatabase(string connString, string taskName)
{
using (SqlConnection conn = new SqlConnection(connString))
{
await conn.OpenAsync();
// 在此处执行数据库操作
// 例如:执行查询
using (SqlCommand cmd = new SqlCommand("SELECT * FROM YourTable", conn))
{
using (SqlDataReader reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
Console.WriteLine($"{taskName} - {reader["Column1"]}");
}
}
}
}
}
}
上記の例では、Taskおよびasync/awaitキーワードを使用して2つの並行タスクを作成し、これらのタスクは同時にデータベースにアクセスしてクエリを実行します。AccessDatabaseメソッドでは、データベース接続を開き、クエリを実行し、クエリ結果を出力します。Mainメソッドでは、Task.WhenAllメソッドを使用してすべてのタスクが完了するのを待ちます。これにより、データベースへのマルチスレッド同時アクセスが実現されます。