9

我想每小时自动保存我的 Pharo 图像。

您将如何在图像中自动执行此操作?

我已经看到 Pier 项目这样做了。但我不确定他们是如何做到的。

TIA

4

3 回答 3

5

邮件列表上讨论的结果,其中包含一些仅每小时运行一次的结冰:

[[self blockUI.
  self doUpdate.
  SmalltalkImage current snapshot: true andQuit: false.
  self unblockUI.
  (Delay forDuration: (Duration hours: 1)) wait] repeat] fork
于 2011-01-11T11:16:56.737 回答
5

SqueakSource 上有一个Scheduler 项目,它看起来像 Smalltalk 的 cron。从概述:

“启动一个新的任务计划程序并保留它”
调度程序:= TaskScheduler 新。
调度程序启动。
“让我们每小时保存一次图像”
调度器
   做:[Smalltalk 快照:真和退出:假]
   每:60 分钟。

您可以将它与上面提到的阻塞代码或 OSProcess 的 saveImageInBackgroundNicely 结合起来,并获得一个很好的简单解决方案。

于 2011-01-12T18:36:02.487 回答
1

你可以做到,它可能工作得很好。

但我不会这样做。

不坚持生产。

为什么?

因为图像就像您在笔记本电脑中的会话。保存您的图像就像让您的笔记本电脑进入睡眠状态:它会保留所有内容。

从长远来看,某些状态会出现一些无法解释的问题,这会使某些事情复杂化,您将需要进行硬重启。

试图成为完美主义者并没有帮助(或者它可能会,但肯定不经济)。它会发生,重新启动笔记本电脑是获得新状态的廉价解决方案。但是对于您的 smalltalk 应用程序来说,这可能并不便宜。

smalltalk 中的硬重启将意味着您必须拍摄新图像并再次加载所有代码(它可以是自动化的,但经验表明这可能很耗时)。

于 2011-01-17T20:11:44.743 回答