Como você pode garantir o funcionamento atexit registrada será executado com AppHelper.runEventLoop () in PyObjC?

StackOverflow https://stackoverflow.com/questions/1255025

  •  12-09-2019
  •  | 
  •  

Pergunta

Eu só estou perguntando por que eu o meu registou uma função atexit ... por exemplo.

import atexit
atexit.register(somefunc)
...
AppHelper.runEventLoop()

É claro que eu sei quando vai atexit não vai funcionar. Quando eu comentar AppHelper.runEventLoop() a função atexit é chamado. Eu também consultei meu ovo pyobjc, e vi debaixo __init__.py sob pacote objc o seguinte código:

import atexit
atexit.register(recycleAutoreleasePool)

Eu olhei para qualquer referência dentro do ovo sem sucesso. Eu também tentei em torno de um AppHelper.runEventLoop() try-finally desembolsar ao redor, e os comandos no bloco finally não será chamado.

Hope alguém poderia me ajudar aqui.

P.S. Supondo que eu não quero usar o método applicationShouldTerminate: do delegado aplicação ...

Foi útil?

Solução

Eu acredito que você faz delegados necessidade, porque caso contrário o ciclo de eventos pode sair do processo de forma abrupta (tipo como os._exit) e, portanto, não dar o Python runtime uma chance para executar o código de terminação tais como cláusulas finally, funções atexit, etc etc .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top