I have a small problem.

My Java application holds some native resources. I want to free those resources just before I exit the application. Therefore I wrote a WindowListener that frees those resources in windowClosed event.

The problem is that I am having a JFrame with EXIT_ON_CLOSE, so when I close the window, it shuts down the JVM and the event will never reach me.

If I use windowClosing event, then somebody can actually override the closing event ater I freed the resources. This will then lead to segfaults in native code.

I can just put away the EXIT_ON_CLOSE and call System.exit(0) from the listener, but that does not seem clean to me.

有帮助吗?

解决方案

You could maybe add a shutdown hook and free the native resources there? Runtime.getRuntime().addShutdownHook(Thread t). See more info here.

其他提示

You can hide the JFrame in the windowClosing before freeing the resources so you can make sure it doesn't get interrupted

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top