【问题标题】:Load data to RAM to be used across all of the forms将数据加载到 RAM 以在所有表​​单中使用
【发布时间】:2019-08-05 20:08:31
【问题描述】:

我想将一些数据从我的 sql 数据库加载到 RAM 中,以便在 C# winform 应用程序中的所有表单中使用。我尝试了 REDIS,但它的问题是我无法在数据库中保存我的对象类型列表或用户定义的类型。 例如,

  • 在应用启动时,我将数据从 sql 加载到 RAM

  • 在发布期间,所有表单均可访问数据

  • 当应用程序关闭时,数据保存回sql数据库并 更新更改的数据(如果有)

这可能吗?

我已经在做的事情如下,在应用程序启动时,我将所有数据从数据库加载到 XML 文件,然后我得到了我想在表单中使用的数据,我反映了对数据的任何更改立即在 XML 文件中。当应用程序关闭时,我用 xml 文件中的内容更新 sql 中的数据。

【问题讨论】:

  • 一旦你加载了数据,你认为它还会存储在哪里? (假设有足够的可用 RAM)我认为您真正要问的是 stackoverflow.com/questions/4247807/… 的副本,但我们需要更多信息/一个 MCRE(最小的完整可重现示例)
  • @AustinTFrench,是的,我知道如果我加载数据,那么是的,它在内存中,我的观点是我如何从一个表单加载数据,然后使其可以通过所有其他表单访问?
  • 为什么你认为从 XML 读取比 Redis 更快?
  • @SaeidAmini,我在哪里说过从 XML 读取更快?我说 REDIS 不允许您将用户类型数据(例如对象类型列表)轻松存储在数据库中,所以我使用 XML,在您发表评论之前阅读整个文本
  • 我没说你说,其实我说你想。你想使用 XML 而不是 Redis,我认为这不是一个好主意。大多数时候 Redis 用作缓存系统。

标签: c# winforms


【解决方案1】:

当然没有必要将数据从 SQL 加载到内存中,然后将该内存转储到一个文件中,编辑该文件,然后在应用程序退出时反转该过程。相反,将数据加载到 Main() 函数中,将其保存到表单可以访问的 public static 变量中。然后,调用运行 WinForms 的方法,编辑静态变量(只要您的表单代码引用该变量,您就不必担心线程安全),并在表单退出后将变量中的数据保存在Main() 方法。希望对您有所帮助!

【讨论】:

  • 谢谢!你的回答很有帮助,我一定会试一试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 2016-12-03
  • 2012-09-19
  • 2017-06-05
  • 1970-01-01
相关资源
最近更新 更多