Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用线程时未获取更新的数据_C#_Sql_Asp.net Mvc_Multithreading_Linq - Fatal编程技术网

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”,您的问题可能会得到解决。
如果没有,您可能不会更新您的用户