modèle Data-Pull et modèle de Data-Push
Un client d’un moniker asynchrone peut choisir entre un modèle d’extraction de données et d’envoi de données pour conduire une opération asynchrone IMoniker ::BindToStorage opération et recevoir des notifications asynchrones. Dans le modèle d’extraction de données, le client pilote l’opération de liaison et le moniker fournit des données au client uniquement au fur et à mesure qu’il est lu. En d’autres termes, après le premier appel à IBindStatusCallback ::OnDataAvailable, le moniker ne fournit aucune donnée au client, sauf si le client a consommé toutes les données déjà disponibles.
Étant donné que les données sont téléchargées uniquement comme elles sont demandées, les clients qui choisissent le modèle d’extraction de données doivent s’assurer de lire ces données en temps voulu. Dans le cas des téléchargements Internet avec monikers d’URL, l’opération de liaison peut échouer si un client attend trop longtemps avant de demander plus de données.
Dans le modèle push de données, le moniker pilote l’opération de liaison asynchrone et avertit en permanence le client chaque fois que de nouvelles données sont disponibles. Le client peut choisir de lire les données à un moment quelconque pendant l’opération de liaison, mais le moniker pilote l’opération de liaison jusqu’à la fin, quel que soit le cas.
En outre, vous devez vous rappeler de suivre les règles COM pour l’allocation de mémoire lors de l’utilisation de monikers asynchrones, en particulier les éléments suivants :
- Chaque fois qu’un appel d’interface ou de fonction COM retourne une mémoire tampon (chaîne ou autre) à son client, le client est chargé de libérer la mémoire en appelant CoTaskMemFree.
- Chaque fois qu’une interface ou une fonction COM nécessite une mémoire tampon à partir de son client, le client doit allouer cette mémoire tampon à l’aide de CoTaskMemAlloc et l’appelé doit le libérer.
Veillez à suivre ces règles lors de l’allocation de chaînes ou de mémoires tampons passées à des monikers asynchrones, et n’oubliez pas de libérer de la mémoire retournée par des monikers asynchrones. Pour plus d’informations, consultez Gestion des d’allocation de mémoire et des rubriques connexes.
Rubriques connexes