使用线程时未获取更新数据

时间:2016-11-10 10:03:03

标签: 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()方法时,它会等待30秒,30秒后它会从sql返回数据。所以现在的问题是,当我在30秒之前更新数据时,它没有返回更新的数据。 请给我解决方案。

1 个答案:

答案 0 :(得分:2)

1)不要在许多线程中重用你的Context(我假设你使用EF)。在每个线程中创建一个新的上下文/存储库
2)不要使用线程,使用任务(任务并行库)

我猜FindBy可能会首先检查已加载的项目,这就是为什么你得到了#34; old"数据。
如果你关注" 1"你的问题可能会得到解决 如果没有,您可能不会更新您的用户....