これに似た以前の質問がありましたが、エンティティ フレームワークに関してです。それ以来、Telerik OpenAccess を使用してみました。これが私のモデルです:
次の関数を 10 秒ごとに約 1 回実行すると、期待どおりに動作し、例外は発生しません。ただし、この関数を 3 回連続して呼び出すと、短時間でこのエラーが発生します。
InvalidOperationException - Not allowed because Commit / Rollback is in progress
これが関数です。例外がスローされますSaveChanges()
private void NewTaskTaskCompleted(object sender, TaskCompletedEvent e)
{
TASK scheduledTask = entities.TASKs.First(x => x.TASK_NAME == e.ClassName);
scheduledTask.NEXT_RUN = e.NextRun;
//entities.SaveChanges();
TASK_LOG logMsg = new TASK_LOG()
{
TASK = scheduledTask,
MESSAGE = e.TaskResult.Message,
STATUS = e.TaskResult.Status ? "Successful" : "Failure",
TIMESTAMP = e.CompletedTime
};
scheduledTask.TASK_LOGs.Add(logMsg);
//entities.Add(logMsg);
entities.SaveChanges();
}
SaveChanges 呼び出しは関数の終了をブロックせず、次の関数呼び出しが発生しないようにしますか?