c# - 使用线程时未获取更新的数据

标签 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)不要在许多线程中重用您的上下文(我假设您使用EF)。在每个线程中创建一个新的上下文/存储库
2)不要使用线程,使用任务(任务并行库)

我猜 FindBy 可能会先检查加载的项目,这就是为什么你得到“旧”数据。
如果您遵循“1”,您的问题可能会得到解决。
如果没有,您可能不会更新您的用户......

关于c# - 使用线程时未获取更新的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40524740/

相关文章:

c# - 如何创建 Asp.net mvc 安全登录页面身份验证?

c# - 在 app.config 中引用程序集

java - 如何在不使用条件的情况下创建返回 1 或 0 的方法?

php - 获取具有该行最大值的列和行

sql - 我们是否可以将查询作为 SQL Server 中的列列表传递给 PIVOT?

c# - 使用 RegularExpressionAttribute 时客户端验证不起作用

javascript - 剑道网格内的按钮单击事件永远不会执行

c# - 我可以在问题中提供的示例中删除属性 setter (没有任何问题)吗?

java - 选择查询的最大日期

asp.net-mvc - MVC 多表单提交