いくつかのダウンロードリンクを含むテーブル「リンク」があります。
私の.NETアプリケーションはこのテーブルを読み取り、リンクを取得し、Webクライアントを作成して、関連するファイルをダウンロードします。これを行う複数のスレッドを作成したいのですが、それぞれが異なるレコードを読み取る必要があります。そうしないと、2つのスレッドが同じファイルをダウンロードしようとします。どうすればこれを行うことができますか?
私はこれを試しましたが、機能しません:
public static Boolean Get_NextProcessingVideo(ref Int32 idVideo, ref String youtubeId, ref String title)
{
Boolean result = false;
using (NpgsqlConnection conn = new NpgsqlConnection(ConfigurationDB.GetInstance().ConnectionString))
{
conn.Open();
NpgsqlTransaction transaction = conn.BeginTransaction();
String query = "BEGIN WORK; LOCK TABLE links IN ACCESS EXCLUSIVE MODE; SELECT v.idlink, v.title " +
" FROM video v WHERE v.schedulingflag IS FALSE AND v.errorflag IS FALSE ORDER BY v.idvideo LIMIT 1; " +
" COMMIT WORK;";
NpgsqlCommand cmd = new NpgsqlCommand(query, conn, transaction);
NpgsqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
idVideo = Convert.ToInt32(dr["idvideo"]);
title = dr["title"].ToString();
Validate_Scheduling(idVideo); //
result = true;
}
transaction.Commit();
conn.Close();
}
return result;
}