在我的程序中有两种方法,一种是开始处理,第二种是结束处理。
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 可能会先检查加载的项目,这就是为什么你得到“旧”数据。
如果您遵循“1”,您的问题可能会得到解决。
如果没有,您可能不会更新您的用户......
关于c# - 使用线程时未获取更新的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40524740/