【问题标题】:Not Getting Updated data when using threading使用线程时未获取更新的数据
【发布时间】:2016-11-10 10:03:03
【问题描述】:

在我的程序中有两种方法,一是开始处理,二是结束处理。

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 秒之前更新数据时,它不会返回我更新的数据。 请给我解决这个问题。

【问题讨论】:

    标签: c# sql asp.net-mvc multithreading linq


    【解决方案1】:

    1)不要在许多线程中重用您的上下文(我假设您使用 EF)。在每个线程中创建一个新的上下文/存储库
    2)不要使用线程,使用Tasks(Task Parallel Library)

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

    【讨论】:

      猜你喜欢
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 2021-06-05
      相关资源
      最近更新 更多