【问题标题】:Best way to read and write time-critical data?读写时间关键型数据的最佳方式?
【发布时间】:2015-08-26 08:00:33
【问题描述】:

我有.txt 文件,每隔 5-10 秒就会被软件中的数据覆盖,然后我有一个 wpf 应用程序,它每秒读取并显示这些数据。这是我的问题:

当前文本文件存储在服务器上,并且有很多用户运行此应用程序来查看这些“实时”数据。 但是,由于:

An I/O bug in windows

文件定期“锁定”并导致所有应用程序锁定(甚至无法在任务管理器中关闭)。

因此,我决定将数据从文本文件复制到 SQL,但据我了解,没有办法覆盖 SQL 表中的数据。必须删除表并创建一个新表。这会导致更新数据延迟 10 多秒,这是不可能发生的。

我的问题是,必须有一种方法可以从某个地方(例如数据库等)快速读取和写入数据。我不知道该转向哪里。

我的限制:

我被 Server 2008 卡住了,必须使用这些文本文件,而且我必须在我的 wpf 应用程序上显示它。有人对可以处理此类 I/O 的方法有任何建议吗?

非常感谢所有帮助,我完全不知所措..

【问题讨论】:

  • 据我了解,无法覆盖SQL表中的数据。 - 你的理解不正确。
  • 你写了多少数据?和之前写的会有多少不同?
  • "据我了解,没有办法覆盖 SQL 表中的数据" 真的吗?更新会响铃吗?
  • 我可以理解写入是否出现问题,但除非文件很大,否则看到读取出现问题很奇怪!
  • 您引用的链接包括解决此问题的两种非编程方式:1)有已发布的修补程序,或 2)禁用电源服务。为什么这些还不够?

标签: c# sql windows time-critical


【解决方案1】:

看来您可能没有丰富的数据库技术经验,所以让我提出一些不同的建议:

string text = System.IO.File.ReadAllText(path);

然后也许您可以获取文本并使用它做您想做的事情,将其转储到队列中以在应用程序的另一部分执行操作。

ReadAllText 有一些异常被抛出:

https://msdn.microsoft.com/en-us/library/ms143368(v=vs.110).aspx

正如你所说,我会留意 UnauthorizedAccessException,当多个用户访问该文件时,该文件似乎已锁定。

【讨论】:

  • 我刚刚查看了您遇到的 I/O 错误...您是否尝试过应用此修补程序?
  • 你说得对,我对 DB 没有太多经验。是的,不幸的是,修复程序不起作用。即使是 1 个用户,该问题实际上仍然存在,因为它似乎是由快速、重复的读/写引起的。
猜你喜欢
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
相关资源
最近更新 更多