Pharo Smalltalk 图像在 Windows 10 上使用 FileStream 无响应



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

是否有必要使用以下内容:

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

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

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

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

比如:

[ target doSomeLongThing ] fork.

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

现在,这不是人们在操场上互动尝试时真正会考虑的事情。

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

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

我希望中断键在所有情况下都能工作,但好吧,它没有,而且是一个坚实的烦恼。

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

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

您还可以使用:

(FileLocation imageDirectory / 'somefile.csv') asFileReference readStreamDo: [ :stream |
"do something with the stream" ].

这将确保:位为您。清洁工。容易。

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

呵呵

最新更新