Interface de objeto
O Windows fornece funções que executam as seguintes tarefas:
- Criar um objeto
- Obter um identificador de objeto
- Obter informações sobre o objeto
- Definir informações sobre o objeto
- Feche a alça do objeto
- Destrua o objeto
Algumas dessas tarefas não são necessárias para cada objeto. Algumas dessas tarefas são combinadas para determinados objetos. Por exemplo, um aplicativo pode criar um objeto de evento. Outros aplicativos podem abrir o evento para obter um identificador exclusivo para esse objeto de evento. À medida que cada aplicativo termina de usar o evento, ele fecha seu identificador para o objeto. Quando não há identificadores abertos restantes para o objeto de evento, o sistema destrói o objeto de evento. Por outro lado, um aplicativo pode obter um identificador para um objeto de janela existente. Quando o objeto window não é mais necessário, o aplicativo deve destruir o objeto, o que invalida o identificador da janela.
Ocasionalmente, um objeto permanece na memória depois que todas as alças de objeto foram fechadas. Por exemplo, um thread pode criar um objeto de evento e aguardar o identificador de evento. Enquanto o thread está aguardando, outro thread pode fechar o mesmo identificador de objeto de evento. O objeto de evento permanece na memória, sem nenhum identificador de objeto de evento, até que o objeto de evento seja definido para o estado sinalizado e a operação de espera seja concluída. Neste momento, o sistema remove o objeto da memória.
Alças e objetos consomem memória. Portanto, para preservar o desempenho do sistema, você deve fechar as alças e excluir objetos assim que eles não forem mais necessários. Se você não fizer isso, seu aplicativo pode prejudicar o desempenho do sistema, devido ao uso excessivo do arquivo de paginação.
Quando um processo termina, o sistema fecha automaticamente as alças e exclui os objetos criados pelo processo. No entanto, quando um thread termina, o sistema geralmente não fecha identificadores ou exclui objetos. As únicas exceções são janela, gancho, posição da janela e objetos de conversação de intercâmbio dinâmico de dados (DDE); Esses objetos são destruídos quando o thread de criação termina.