私はEntity Frameworkが初めてなので、ご容赦ください。
テーブルから複数のレコードを選択してキューに保存するプログラムがあります。
private Queue<RecordsToProcess> getRecordsToProcess()
{
Queue<RecordsToProcess> results = new Queue<RecordsToProcess>();
using (MyEntity context = new MyEntity())
{
var query = from v in context.RecordsToProcess
where v.Processed == false
select v;
foreach (RecordsToProcess record in query)
{
results.Enqueue(record);
}
}
}
次に、複数のワーカー スレッドを起動します。各ワーカー スレッドは、キュー内のアイテムの 1 つを取得して処理し、データベースに保存します。
private void processWorkerThread(object stateInfo)
{
while (workQueue.Count > 0)
{
RecordToProcess record = new RecordToProcess;
lock(workQueue)
{
if (workQueue.Count > 0)
RecordToProcess = workQueue.Dequeue();
else
break;
}
//Do the record processing here
//How do I save that record here???
}
}
私の理解では、変更をデータベースに保存するには context.SaveChanges() を呼び出すだけですが、この状況ではそれを行うことはできませんか?
どんな助けでも大歓迎です。
ありがとう!