Sincronização de retorno de chamada
O assíncrono da API do WinInet (usado para os protocolos mais comuns) deixa a sincronização do mecanismo de retorno de chamada e do aplicativo de chamada como um exercício para o cliente. Isso é intencional porque permite o maior grau de flexibilidade. Os protocolos padrão e a implementação do moniker de URL executam essa sincronização e garantem que aplicativos com thread único e com threads de apartamento nunca precisem lidar com a contenção de estilo de thread livre. Ou seja, as interfaces deIEnumFORMATETCdo cliente eIBindStatusCallback são chamadas apenas em seus threads apropriados. Esse recurso é transparente para o usuário do mMoniker de URL, desde que cada thread que chama IMoniker::BindToStorage e IMoniker::BindToObject tenha uma fila de mensagens.
A especificação de moniker assíncrono requer um controle mais preciso sobre a priorização e o gerenciamento de downloads do que o permitido pelo WinSock ou WinInet. Assim, um moniker de URL gerencia todos os downloads de qualquer thread do chamador, usando (como parte de sua sincronização) um esquema de prioridade com base na especificaçãoIBinding do.
Tópicos relacionados