Thread do MS Office a partir de um único arquivo DLL?


1

Eu trabalho para um service desk, nós usamos o MS Office no Windows 7. Tenho notado que quando um programa de escritório trava e se outro está em execução, fechar o outro programa de escritório em execução permitirá que você reinicie o que caiu, se você não feche, parece que não funciona.

Por exemplo:

Vamos dizer que seu aplicativo do Outlook trava e você tem o Skype em execução. Se você tentar relançar o Outlook na maior parte do tempo, receberá um erro dizendo algo como Cannot open Outlook. No entanto, se você fechar o Skype e executar o Outlook novamente, o Outlook será iniciado com êxito e o Skype também funcionará com êxito.

Então, minha pergunta é, isso acontece porque o MS Office encadeia o mesmo arquivo DLL? Como um thread executa um aplicativo, e outro thread executa outro, isso faria sentido porque, pelo que entendi se um encadeamento for travado e outro encadeamento estiver sendo executado, ele não iniciará o outro encadeamento até que o encadeamento secundário tenha terminado.

Respostas:


0

isso acontece porque o MS Office encadeia o mesmo arquivo DLL?

Sim você está certo! O Office "compartilha" algumas DLLs com outros programas ou (melhor dizer) outros aplicativos usam várias DLLs do Office. Uma DLL é um tipo de "servidor" que oferece suas funções para muitos "clientes".


Então, haveria uma maneira de reabrir o aplicativo sem precisar reiniciar os threads?
Pyth0nicPenguin

Isso depende. Se apenas uma instância for permitida, você não poderá: O sistema mantém uma contagem de referência por processo em todos os módulos carregados. Chamar LoadLibrary incrementa a contagem de referência. Chamar a função FreeLibrary ou FreeLibraryAndExitThread diminui a contagem de referência. O sistema descarrega um módulo quando sua contagem de referência atinge zero ou quando o processo termina (independentemente da contagem de referência).
duDE

1
Ok, isso faz sentido, obrigado!
Pyth0nicPenguin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.