0

我正在使用 Pharo 6.1 图像进行一些 CSV 文件处理。有时我的图像变得没有响应——我必须从任务管理器中终止 Pharo VM。

是否有必要使用类似的东西:

ensure:[toStream close]
ensure:[fromStream close]

什么是使用 Pharo 读取特别是写入文件的简单但可靠的方法?

4

1 回答 1

1

图像并非真的没有响应,但 UI 线程肯定是当您执行长操作(如读取大 CSV 文件)时。

最好的办法是做一个过程。

像:

[ target doSomeLongThing ] fork.

您可以从世界菜单在进程浏览器中查看进程并在那里终止它。

现在,在操场上以交互方式尝试事物时,这并不是人们真正会考虑的事情。

我为缓解这种情况所做的工作是双重的:

  1. 把这些东西放在测试中。为什么?因为测试有一个最长的持续时间,如果事情被卡住了,他们会从测试中返回一个超过时间的通知。
  2. 在端口上启动 Zinc REPL,这样如果 UI 线程有点卡住,我可以从 Web 浏览器访问系统并重新启动 UI 线程。

我希望中断键在所有情况下都能正常工作,但它不会,而且是一个非常烦人的问题。

我认为图像应该被视为可丢弃的工件,CI 工作应该定期(如每天)构建它们,以便我们有一些恢复路径。

这并不是很酷,因为是的,使用图像并能够在进行探索时无需一直重建东西就可以返回它,这不应该让我们因 UI 线程阻塞而感到沮丧。我讨厌那个。我的图像因某些 Glamour 问题而在重新启动时卡住了,这令人愤怒,因为它无法调试或任何东西。

您还可以使用:

(FileLocation imageDirectory / 'somefile.csv') asFileReference readStreamDo: [ :stream |

     "do something with the stream" ].

这将为您确保:位。清洁器。更轻松。

对于 CSV,也可以试试 NeoCSV,因为它也会为您处理文件。

高温高压

于 2018-06-26T06:09:32.003 回答