COM+ Visual Basic Debugging Suporte contrastado com MTS
COM+ remove ou reduz várias limitações de depuração com o Microsoft Visual Basic 6.0 e MTS. A lista a seguir resume as alterações que você pode esperar com COM+:
Depurando vários componentes — em COM+, você pode depurar cenários em que um cliente em execução em uma instância do IDE faz chamadas para qualquer número de DLLs em execução em outra como um grupo de projeto. Os objetos nos projetos DLL agrupados podem chamar uns aos outros arbitrariamente, fluindo contexto conforme necessário. Claro, isso também funciona quando as DLLs e o cliente estão no mesmo grupo de projeto na mesma instância do IDE.
Depurando limitações em eventos Class_Initialize e Class_Terminate — com COM+, você pode colocar código nos eventos Class_Initialize e Class_Terminate de um componente de aplicativo COM+, mesmo que esse código tente acessar o objeto ou seu objeto de contexto correspondente. Você pode definir pontos de interrupção lá e usar relógios. Você também pode definir pontos de interrupção no evento Class_Terminate.
Embora não seja mais necessário como uma solução alternativa, você ainda pode implementar a interface IObjectControl e usar seus métodos Activate e Deactivate se precisar executar código durante a inicialização e o desligamento do componente. Agora você também pode colocar pontos de interrupção no código para os métodos Deactivate ou CanBePooled .
Observando objetos MTS — Com COM+, você pode adicionar inspeções para variáveis de objeto retornadas por COM+, incluindo valores de retorno dos métodos SafeRef, GetObjectContext e IObjectContext::CreateInstance.
Maior estabilidade quando os componentes falham — No COM+, uma falha de componente nem sempre interromperá o Visual Basic (que é executado no mesmo processo que o componente depurado). Por exemplo, o suporte para falhas de reativação just-in-time (JIT) agora permite que você examine o contexto do objeto durante a depuração.
Depurador pode reativar objetos lançados por COM + — Assim como no MTS, o Visual Basic 6.0 pode reativar objetos COM + enquanto você estiver depurando uma única etapa por meio de um cliente. Devido à maneira como o Visual Basic 6.0 descobre informações sobre objetos, esse é o comportamento esperado. Por exemplo, considere o seguinte código:
Dim obj As Object Set obj = CreateObject("MyApp.MyClass") obj.Test 'Call the user-defined subroutine named Test. Set obj = Nothing
Se o obj. Método de teste chama IObjectContext::SetComplete, COM+ libera imediatamente obj da memória, mas obj ainda não foi definido como Nothing. Quando obj. Test retorna, o depurador do Visual Basic chama QueryInterface no obj para a interface IProvideClassInfo. O wrapper de contexto associado ao obj cria uma nova instância de MyApp.MyClass para atender a chamada QueryInterface . Como resultado, você verá esse objeto não inicializado no depurador após obj. O teste voltou. Esse objeto aparece somente no depurador e é removido pela instrução subsequente para definir obj como Nothing.
Tópicos relacionados