使用线程时没有获得更新的数据
本文关键字:更新 数据 线程 | 更新日期: 2023-09-27 18:17:11
在我的程序中有两个方法,一个是开始处理,第二个是结束处理。
Public void StartProcessing()
{
Thread.Sleep(30000)
bool isActive = _repository.FindBy(s=>s.UId == 1).isActive //Linq Query
}
Public void EndProcessing()
{
//Update data
}
所以当我调用StartProcessing()
方法时,它等待30秒,30秒后它从sql返回数据。现在的问题是,当我在30秒前更新数据时,它没有返回更新后的数据。
1)不要在许多线程中重用上下文(我假设您使用EF)。在每个线程中创建一个新的上下文/存储库
2)不要使用线程,使用任务(任务并行库)
我猜FindBy可能首先检查加载的Items,这就是为什么你得到"旧"数据。
如果你遵循"1",你的问题可能会解决。
否则,您可能不会更新您的用户....