使用线程时没有获得更新的数据

本文关键字:更新 数据 线程 | 更新日期: 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",你的问题可能会解决。
否则,您可能不会更新您的用户....