主项目的代码里,预期一直使用的ExternalResource实例,每次使用后就执行了close(),但是实际上依然能多次使用这个实例。这个现象正常吗?对于预期一直使用的ExternalResource实例,正确做法是不close()是吧?
写进了demo项目来复现演示:DemoBotLogic的成员demoExternalResource仅初始化一次。每次onMessage时就执行close()。
public class DemoBotLogic implements ListenerHost { JvmPlugin plugin; ExternalResource demoExternalResource; ………… public DemoBotLogic(JvmPlugin plugin) { this.plugin = plugin; ………… demoExternalResource = ExternalResource.create(plugin.resolveDataFile("demo.png")); } @NotNull @EventHandler public ListeningStatus onMessage(@NotNull GroupMessageEvent event) throws Exception { // test close ExternalResource every time if (event.getMessage().contentToString().equals("test ExternalResource")) { Image image = event.getGroup().uploadImage(demoExternalResource); try { demoExternalResource.close(); } catch (IOException e) { plugin.getLogger().error("Image externalResource.close error" + e.getMessage()); } event.getGroup().sendMessage(image); } return ListeningStatus.LISTENING; } }
07157f3e-8285-4e95-b6e1-e335c2204ea4-image.png
mcl日志也没有报"Image externalResource.close error",就算是执行close()成功了吧。