2010-07-21 5 views
5

J'essaie d'envoyer une chaîne sur un canal nommé en utilisant StreamWriter, mais la classe StreamWriter n'offre que des opérations synchrones. Je peux employer la méthode BeginWrite de la classe NamedPipeServerStream, mais je me demande pourquoi il n'y a aucune classe d'auteur qui autoriserait des opérations asynchrones. Est-ce que je manque quelque chose d'évident?Utilisation de canaux nommés de manière asynchrone avec StreamWriter

+0

I savoir que http://stackoverflow.com/questions/3015748/how-to-do-a-non-waiting-write-on-a-named-pipe-c question est très similaire, mais je me demande pourquoi les classes .NET Writer n'offre pas cette fonctionnalité. Est-ce que je manque un point évident? – Lenik

Répondre

2

Ce serait beaucoup plus compliqué que pour les flux bruts. Pour les flux bruts, n'importe quelle quantité de données peut arriver de manière asynchrone et le système ne fait que vous passer le tampon. Le lecteur nécessite un codage de caractères qui peut transformer plusieurs octets de données brutes en un seul caractère Unicode. Non que ce soit impossible, les bibliothèques de frameworks ne le prennent pas si loin que vous aurez besoin de faire ce travail vous-même.

(En fonction de vos besoins, ce qui crée un autre thread et effectuer les opérations de manière synchrone sur elle pourrait le rendre plus facile d'écrire votre programme. Notez que l'évolutivité serait généralement plus élevé lorsque vous utilisez Begin/End async.)

Questions connexes