Pregunta

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.

¿Fue útil?

Solución

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

Otros consejos

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top