Tag: readfile

在“config.cfg”等文本文件中存储程序设置的逻辑如何?

我常常看到一些软件,特别是在文本文件中存储设置的游戏。 我想在我的C#WinForms应用程序中也有相同的东西(我知道可以用于用户和软件方面的应用程序设置)因为我认为最终用户更容易处理它。 所以我需要知道的是如何读取这些设置文件,例如设置类的字段。 想象一下,我有一个具有以下字段的类: private double vOffset = 0; private bool Refresh = false; 这将是我的文本文件(假设文件名为“config.cfg”): ;This is a comment Voltage Offset = 0.08 ;Refresh Enable = 1 | Disable = 0 Refresh = 1 想听听你的想法,也许还有一些代码可能! 用于读取此文件和更新类字段,以及如何从软件中保存或更新此列表。 谢谢。

内存不足错误归档日志文件

我遇到了运行控制台作业的问题,并创建了我在午夜归档的每日日志文件。 这将为第二天创建一个空白日志文件,并在名称和旧文件的内容中创建一个带有昨天日期的归档文件,用于调试我可能已经知道的问题,直到第二天才知道。 但是,当我尝试归档文件时,由于我加快了BOT的工作,我遇到了System Out of Memory错误的问题。 起初我根本无法获得一个存档文件然后我找到了一种方法来获得至少最后的100,000行,这还不够。 我把所有东西都包裹在3次尝试/捕获中 I / O 系统内存不足 标准例外 但是,我总是得到OutOfMemoryException,例如 System.OutOfMemoryException错误:抛出了类型’System.OutOfMemoryException’的exception。 举个例子,大小为100,000行的日志大约是11MB文件 标准的完整日志文件可以是1/2 GB到2 GB的任何内容 我需要知道的是: a)当尝试使用File.ReadAllText或我调用ReadFileString的自定义StreamReader函数时,标准文本文件的大小会引发内存不足错误,例如 public static string ReadFileString(string path) { // Use StreamReader to consume the entire text file. using (StreamReader reader = new StreamReader(path)) { return reader.ReadToEnd(); } } b)是我的计算机内存(我有16GB内存 – 复制时使用8GB)或我在C#中使用的文件打开和复制失败的对象。 归档时我首先尝试使用我的自定义ReadFileString函数(见上文),如果返回0字节的内容我尝试File.ReadAllText然后如果失败我尝试自定义函数来获取最后100,000行,这实际上是不够的在当天早些时候调试错误。 日志文件在午夜开始创建新日志并记录全天。 我从来没有过去的内存错误,但由于我已经调高了方法调用的频率,日志记录已经扩展,这意味着文件大小也有。 这是我获取最后100,000行的自定义函数。 我想知道在没有IT丢失内存错误的情况下我可以获得多少行,并且我根本没有得到最后几天日志文件的任何内容。 […]

应该定期调用GC.Collect()吗?

我最近发布了一篇关于日志文件读取器由于内存不足错误而失败的文章> 内存错误归档日志文件 在我有机会尝试更简单的方法(调用日志文件的名称,其中有一个日期以防止存档)这显然意味着重写方法等,我首先尝试垃圾收集选项,因为我从来没有使用它,例如GC.Collect的()。 如果在尝试读取日志文件内容时抛出内存错误,则将其置于第一次try / catch中,并且它似乎释放了一半内存,例如从此过程中使用的调试文件中释放(因为日志文件明显不在动作所以这是为了帮助我调试事后)我从昨晚的归档过程得到这个回应。 Attempt Archive Take contents of current file with ReadFileString (this is my custom stream reader method I wrote which you can see in the original article) Taken contents of current file! In TRY/CATCH – Out of Memory Exception – Try GC.Collect() Memory used before collection: **498671500** Memory used after […]