Gerenciamento de tempo de vida
Comunicação remota recursos suplemento do modelo de complicam o gerenciamento da tempo de vida.Pois lixo coleção não adequadamente dá suporte a recuperação de objetos em vários domínios do aplicativo, o modelo de suplemento fornece seu próprio sistema de gerenciamento de tempo de vida.Este sistema de gerenciamento usa um sistema de contagem de referência e serviços de comunicação remota do common linguagem tempo de execução.
Sistema de gerenciamento de tempo de vida suplemento do modelo de pode se estender por vários domínios de aplicativos e processos isolados para certificar-se de que objetos, contratos e suplementos sejam descartados e seus domínios de aplicativo são descarregados.O sistema faz isso mantendo um identificador de token (ContractHandle) para o suplemento durante o time em que o add-in de serviços uma telefonar do host.
Implementação do gerenciamento de tempo de vida
Para implementar o gerenciamento da vida útil, você deve adquirir um token de vida útil sempre que um contrato é usado em um adaptador de contrato para exibição e revogar o token de tempo de vida, em seguida, quando o adaptador for concluído com ela.The ContractHandle classe faz esse trabalho para você, se você usá-lo em seus adaptadores. Se o pipeline passa tipos personalizados, você deve adquirir o identificador de token em todas as classes de adaptador de contrato para exibição que você implementar.Para obter mais informações sobre adaptadores de contrato para exibição, consulte Contratos, exibições e adaptadores.
The ContractHandle classe aceita o contrato sistema autônomo seu construtor. O exemplo a seguir mostra como conjunto o identificador de token de tempo de vida em um adaptador do host.
Observação importante: |
---|
O ContractHandle é fundamental para o gerenciamento da tempo de vida. Se você não conseguir manter uma referência à ContractHandle o objeto, coleta de lixo será solicitá-lo e a tubulação será desligado quando seu programa não espera. Isso pode levar a erros que são difíceis de diagnosticar como sistema autônomo AppDomainUnloadedException. desligado é um preparar da tempo de vida de um pipeline normal, portanto, não é possível para o código de gerenciamento de tempo de vida detectar essa condição é um erro. |
Private _contract As ICalc2Contract
Private _handle As ContractHandle
Public Sub New(ByVal contract As ICalc2Contract)
_contract = contract
_handle = New ContractHandle(contract)
End Sub
private CalculatorContracts.ICalc2Contract _contract;
private System.AddIn.Pipeline.ContractHandle _handle;
public CalculatorContractToViewHostAdapter(ICalc2Contract contract) {
_contract = contract;
_handle = new System.AddIn.Pipeline.ContractHandle(contract);
}
Depois que você adquire o identificador de token, o sistema se encarrega de todas as funções de gerenciamento de tempo de vida e requer sem programação adicional.
No modelo de suplemento, o host e suplementos operam sistema autônomo se seus próprios gerenciamento da tempo de vida foi controlado pelo coletor de lixo.Obtém descartadas suas referências de locais e que faz com que todas as referências remotas a ser descartado e coletados.
Suplemento de desligado
O aplicativo host pode desligar domínio do aplicativo de um suplemento, chamando o Shutdown método para o AddInController classe.
The AddInController classe mantém registro de suplementos e seus domínios de aplicativo para certificar-se de que eles estejam descarregados.
Consulte também
Conceitos
Contratos, exibições e adaptadores
Date |
History |
Motivo |
---|---|---|
Julho de 2008 |
Adicionar uma observação sobre como manter uma referência ao contrato. |
Comentários do cliente. |