【问题标题】:Thread wait on file input pattern线程等待文件输入模式
【发布时间】:2011-05-28 06:30:14
【问题描述】:

当线程到达文件末尾时,线程在 C# 中等待文件输入的正常模式是什么? 需要等待。任何特别的编码方式,简洁优雅。

谢谢。 鲍勃。

【问题讨论】:

  • 请提供更多关于您想要做什么以及如何做的信息。
  • 基本上我正在寻找一种方法来阻止(可能有超时),直到它们在文件中可供读取。

标签: c# multithreading file file-io input


【解决方案1】:

不是真正的模式,但 FileSystemWatcher (http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx) 可能会派上用场。

【讨论】:

  • 我过去用过它,而且地点/时间错误。我有一个线程阅读器,正在阅读文件。它开放供共享阅读和写作。
  • 看起来 FileSystemWatcher 是一个相当不错的内核文件更改事件监听器,但轮询时间有点不确定。值得与 FileInfo 结合使用,以仔细检查文件大小的变化。
【解决方案2】:

我有兴趣看看其他答案是什么。我还没有找到一个优雅的解决方案。这是我过去所做的。

  1. 让阅读器尝试以独占方式打开文件。如果文件在其他地方打开,这将失败。
  2. 有一个重试循环....睡眠 X 毫秒...重试 Y 次。通常,我将 X 和 Y 提取到配置文件中。

希望这会有所帮助。

鲍勃

【讨论】:

  • 这就是我使用的方法。它提供的另一个优点是它迫使您等到文件编写器完成。如果它是一个来自慢速链接的大文件,这很重要。但是由于 OP 想要共享读/写,因此您从最后一个有效位置轮询 bytecount > 0。它足够优雅。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2019-08-27
  • 1970-01-01
相关资源
最近更新 更多