我想每小时自动保存我的 Pharo 图像。
您将如何在图像中自动执行此操作?
我已经看到 Pier 项目这样做了。但我不确定他们是如何做到的。
TIA
我想每小时自动保存我的 Pharo 图像。
您将如何在图像中自动执行此操作?
我已经看到 Pier 项目这样做了。但我不确定他们是如何做到的。
TIA
邮件列表上讨论的结果,其中包含一些仅每小时运行一次的结冰:
[[self blockUI.
self doUpdate.
SmalltalkImage current snapshot: true andQuit: false.
self unblockUI.
(Delay forDuration: (Duration hours: 1)) wait] repeat] fork
SqueakSource 上有一个Scheduler 项目,它看起来像 Smalltalk 的 cron。从概述:
“启动一个新的任务计划程序并保留它” 调度程序:= TaskScheduler 新。 调度程序启动。 “让我们每小时保存一次图像” 调度器 做:[Smalltalk 快照:真和退出:假] 每:60 分钟。
您可以将它与上面提到的阻塞代码或 OSProcess 的 saveImageInBackgroundNicely 结合起来,并获得一个很好的简单解决方案。
你可以做到,它可能工作得很好。
但我不会这样做。
不坚持生产。
为什么?
因为图像就像您在笔记本电脑中的会话。保存您的图像就像让您的笔记本电脑进入睡眠状态:它会保留所有内容。
从长远来看,某些状态会出现一些无法解释的问题,这会使某些事情复杂化,您将需要进行硬重启。
试图成为完美主义者并没有帮助(或者它可能会,但肯定不经济)。它会发生,重新启动笔记本电脑是获得新状态的廉价解决方案。但是对于您的 smalltalk 应用程序来说,这可能并不便宜。
smalltalk 中的硬重启将意味着您必须拍摄新图像并再次加载所有代码(它可以是自动化的,但经验表明这可能很耗时)。