gpt4 book ai didi

c# - 实时观看 WPF 中写入的 CSV

转载 作者:太空宇宙 更新时间:2023-11-03 11:07:11 25 4
gpt4 key购买 nike

我们有一台实验室设备可以始终将制表符分隔的记录写入 CSV 文件,我的任务是编写一个应用程序来使用该数据。那部分很简单。然而,除此之外,我还负责找到一种方法,通过使用数据绑定(bind)的 WPF 应用程序“实时”“观看”该文件。我有两个优势可以帮助简化这项任务。

  1. 写入 CSV 的记录每隔 8 秒发生一次。

  2. 在我需要观看 CSV 的总时间段内,文件本身几乎永远不会增长到大于 100mb - 如果是的话。我见过的大多数文件都是 20-30mb。

我的问题

有没有一种方法可以打开文件并保持“持续”读取或监视其内容,或者我是否必须使用经典文件 IO 轮询来执行此操作?

我尝试解决这个问题的思路

在修辞上,我想,“这个 CSV 与数据库有什么不同?”但进一步research显示 EF 不能直接使用 CSV。如果 Entity Framework 中的 DbContext 可以与数据绑定(bind)一起使用以报告属性的变化,我是否也可以设置类似的东西来观察 CSV 变化?但无论我采取何种方式,任何解决方案都会不断回到“轮询”。例如,我可以使用 Linq 定期访问 CSV 并将结果返回给一个属性,当属性的值发生变化时(某些内容已添加到 CSV 中),数据绑定(bind)就会知道它并且应用程序可以相应地采取行动。是的,这听起来像投票。

总结

如果有更简单的解决方案可以利用 WPF/数据绑定(bind)或 EF(如果可能)或我没有想到或未在此处提及的某些 .NET 类来回答我的问题或解决我的问题,我很想听听它。

最佳答案

您可以使用 FileSystemWatcher 来检测文件长度或上次修改时间何时更改,只要您知道 FSW 在无法读取其指向的目录时表现不佳这一事实在(例如,因为您与共享的连接中断;有解决方法)。

您最好不要让文件保持打开状态,否则您可能会干扰作者。我的建议是在检测到变化时打开-阅读-关闭。

EF 并非设计用于直接处理文件;它旨在与可能由文件支持的数据库引擎一起使用,这是完全不同的事情。幸运的是,读取 CSV 行并没有那么困难,并且假设它是仅追加的,跟踪到目前为止您已经阅读了多远并从那时开始您的下一次阅读也不是一个难题。

关于c# - 实时观看 WPF 中写入的 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com