C# 使用线程时未获取更新的数据
在我的程序中有两种方法,一种是开始处理,另一种是结束处理C# 使用线程时未获取更新的数据,c#,sql,asp.net-mvc,multithreading,linq,C#,Sql,Asp.net Mvc,Multithreading,Linq,在我的程序中有两种方法,一种是开始处理,另一种是结束处理 Public void StartProcessing() { Thread.Sleep(30000) bool isActive = _repository.FindBy(s=>s.UId == 1).isActive //Linq Query } Public void EndProcessing() { //Update data } 因此,当我调用StartProcessing()方法
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”,您的问题可能会得到解决。
如果没有,您可能不会更新您的用户