- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我计划将所有配置设置存储在应用程序的 app.config 部分(使用 ConfigurationManager.AppSettings
类)。当用户使用应用程序的 UI 更改设置(单击复选框、选择单选按钮等)时,我计划将这些更改写入 AppSettings
。同时,在程序运行时,我计划从一个不断处理数据的进程中不断访问 AppSettings
。通过 UI 更改设置需要实时影响数据处理,这就是进程将不断访问 AppSettings
的原因。
就性能而言,这是个好主意吗?使用 AppSettings
应该是编写 .Net 应用程序时存储和访问配置设置的“正确方法”,但我担心这种方法不适用于恒定负载(至少在不断读取设置)。
如果有人有这方面的经验,我将不胜感激。
更新:我应该澄清几点。
这不是 Web 应用程序,因此将数据库连接到应用程序可能仅仅为了存储配置设置就有些矫枉过正了。这是一个 Windows 窗体应用程序。
根据 MSDN 文档,ConfigurationManager
不仅用于存储应用程序级设置,还用于存储用户设置。 (例如,如果应用程序作为部分信任的应用程序安装,则尤为重要。)
更新 2: 我接受了 lomaxx 的回答,因为 Properties
确实看起来是一个不错的解决方案,而无需向我的应用程序添加任何额外的层(例如数据库) .使用 Properties 时,它已经完成了其他人建议的所有缓存。这意味着任何更改和后续读取都在内存中完成,使其速度非常快。属性仅在您明确告知时才将更改写入磁盘。这意味着我可以在运行时即时更改配置设置,然后仅在程序退出时才将最终保存到磁盘。
为了验证它是否真的能够处理我需要的负载,我在笔记本电脑上进行了一些测试,使用 Properties 每秒能够进行 750,000 次读取和 7,500 次写入。这远远超出了我的应用程序永远甚至接近需要的范围,我觉得在不影响性能的情况下使用 Properties 非常安全。
最佳答案
由于您使用的是 winforms 应用程序,如果它在 .net 2.0 中,则实际上有一个用户设置系统(称为属性)是为此目的而设计的。 This article on MSDN对此有很好的介绍
如果您仍然担心性能,请查看 SQL Compact Edition它与 SQLite 类似,但我发现它是 Microsoft 提供的产品,可以很好地与 winforms 配合使用,甚至可以 make it work with Linq
关于c# - ConfigurationManager.AppSettings 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157/
我有一些好奇,希望 .Net 专家可以帮助我。 我有一个自定义配置部分,为了掌握它,我这样做: var s = (TestConfigurationSection)ConfigurationManag
我有一个解决方案分为两个项目,一个用于类库,另一个用于单元测试(使用 NUnit 2.5)。现在,在类库项目的 App.config 文件中,我添加了几行,例如 我在类库代码中阅读 Configur
这个问题在这里已经有了答案: The name 'ConfigurationManager' does not exist in the current context (19 个回答) 关闭 5
大家好,我收到以下错误:“名称‘ConfigurationManager’在当前上下文中不存在” // namespaces using System; using System.Collection
我尝试使用 ConfigurationManager,起初 System.Configuration 没有,我想知道为什么。 经过一些尝试,在包含引用 System.Configuration 之后它
我正在以最简单的方式使用配置管理器: 阅读: ConfigurationManager.AppSettings["Foo"] 写: Configuration config = Configurati
我的程序有如下配置文件 通过深入挖掘,我发现了如何 A) 检查该 key 是否存在 B) 在需要时添加一个新 key 。由于我的程序在程序文件中,我发现为了
我无法从 App.Config 文件中获取 connectionString.. 我错过了什么吗? 创建类(class)后,我将类(class)移到了某个文件夹中。这是问题所在吗?不移动类的解决方案是
所以,我有一个类库,我知道它会被网站使用,我需要访问配置设置。我添加了对 System.Configuration 的引用,但在类库中找不到 ConfigurationManager。有几件事,其中一
这是我使用的代码: private void SaveConfiguration() { if (txtUsername.Text != "" && txtPassword.Text != "
我正在尝试为我的项目编写单元测试,但它不允许我使用配置管理器。现在我的项目设置如下 ASP.Net 应用程序(所有 aspx 页面) ProjectCore(所有 C# 文件 - 模型) Projec
我有一个对 System.Configuration 的引用 - 并且 ConfigurationSettings 没有问题 - 但类型或命名空间“ConfigurationManager”找不到!?
我正在尝试从配置文件访问 connectionStrings。代码是 ASP.NET + C#。我已经添加了 System.Configuration 以供引用,并且还提到了使用。但它仍然不接受程序集
我有一个 VS2008 ASP.NET Web 服务应用程序在我的 XP 机器的本地 IIS 上运行。同一解决方案中的一个单独项目使用测试方法来调用 WS 调用,并运行它们的进程。 当我向 WS Ap
用于连接数据库时出现“ConfigurationManager未声明”错误信息如何解决? 这是给出错误的代码行: SQLConnStr= ConfigurationManager.Connection
我正在编写一个配置系统,其中 app.config 文件是由分布在多个位置的各种配置片段动态构建的。该系统目前的工作方式如下: Bootstrapper 构建配置文件。 Bootstrapper 使用
我一直使用我自己的配置文件格式,即 XML,然后我只是将 XML 反序列化为我项目中的一个对象,或者只是将其读入 XML 文档。 这似乎更容易阅读和访问我需要的信息。 我今天早上查看了 Configu
我使用下面的代码来读取配置。此代码在 global.asax Application_Start 方法中使用。 var showAllMethodSetting = Configura
我目前的理解是它调用我的配置文件中的某些内容并返回数据。我不清楚 ConfigurationManager.AppSettings 的参数是什么。 我已经浏览了此文档( https://msdn.mi
我根本无法让 Visual Studio 2005 找到 System.Configuration.ConfigurationManager 类。这是代码: using System.Configur
我是一名优秀的程序员,十分优秀!