2017-10-18 13 views
-1

Il existe une propriété CompletedSynchronously dans l'interface IAsyncResult qui renvoie true si l'opération asynchrone est terminée de manière synchrone. Mais dans quels cas cela n'est-il pas compréhensible? Est-il possible d'éviter cela? Explique s'il te plaît.Lorsque l'opération asynchrone s'est terminée de manière synchrone?

+0

_ "Mais dans quels cas cela n'est-il pas compréhensible?" - que voulez-vous dire par "non compréhensible"? Je ne comprends pas votre question. De quoi vous inquiétez-vous? Avez-vous une vraie programmation _problem_ vous avez besoin d'aide pour résoudre? –

+0

Pourquoi l'opération asynchrone s'est-elle terminée de manière synchrone? – Mihail

+0

_ "Pourquoi l'opération asynchrone s'est-elle terminée de manière synchrone?" _ - parce qu'elle le pouvait. Par exemple, vous lisez à partir d'un lecteur de texte, mais le lecteur a déjà mis en mémoire tampon les données dont vous avez besoin, de sorte qu'il peut terminer la lecture immédiatement au lieu d'attendre sur un périphérique d'E/S plus lent. Les plates-formes informatiques sont pleines de divers exemples de mise en cache, de mise en mémoire tampon et d'autres mécanismes conçus pour améliorer l'efficacité, et parfois, elles fonctionnent assez bien pour que vous puissiez faire quelque chose immédiatement, au lieu de l'attendre. –

Répondre

1

Comme MSDN états:

Utilisez cette propriété pour déterminer si l'opération asynchrone terminée de manière synchrone. Par exemple, cette propriété peut retourner vrai pour une opération d'E/S asynchrone si la demande d'E/S était petite

OP:

Mais dans quels cas est-ce pas compréhensible. Est-il possible d'éviter cela?

Oui, il faut noter:

La plupart des réalisateurs de l'interface IAsyncResult ne pas utilisation cette propriété et devrait return false. À partir de .NET Framework 4.5, une tâche créée avec la méthode FromAsync ne se terminera pas si cette propriété n'est pas implémentée correctement. Voir Compatibilité des applications dans .NET Framework 4.5.

+0

Que signifie "demande était petite"? – Mihail

+0

J'ai plusieurs demandes identiques. Certains sont exécutés de façon synchrone, d'autres de manière asynchrone. – Mihail

+0

@Mihail _ "small" _ référez-vous au commentaire de Peter au dessus de votre question – MickyD