Le tuyau de mode de transmission est un système d'exploitation Windows concept, pas une .NET concept. Si un canal est créé dans le Message de mode, chaque écriture à la conduite par l'expéditeur est considéré comme un message. Le récepteur peut lire à partir du tuyau, soit:
- en mode Octet, lorsque les données sont lues à partir de la pipe comme un flux d'octets, en ignorant complètement le message implicite des limites; ou
- en mode Message, lorsque des données sont lues comme un flux de messages, dans le sens que toute la lecture de seulement recevoir des octets relatives à un seul message et un code d'erreur est retourné par l'API native pour indiquer si il y a plus d'octets à recevoir pour le même message.
L' .NET de l'emballage de cette fonctionnalité, comme l'ont fait surface dans l' System.IO.Pipes
d'espace de noms, suit le natif sous-jacent modèle assez proche:
- message limites sont toujours
déterminé par le motif de l'appel effectué par l'expéditeur à
PipeStream.Write()
ou
PipeStream.WriteByte()
- les données
écrit lors de chaque appel est traité comme un distinct
message;
- le récepteur peut définir
ReadMode
de
PipeTransmissionMode.Message
, puis de chaque appel d' PipeStream.Read()
ou PipeStream.ReadByte()
permettra de lire le prochain bloc de données du message actuel, jusqu'à ce que la valeur de PipeStream.IsMessageComplete
change à true, ce qui indique que tous les octets pour que le message a été lu
Toutes les lectures et écritures sont faites en termes d'octets ou de tableaux d'octets. Vous pouvez envoyer ce octets vous le souhaitez vers le bas d'un tuyau. Le TransmissionMode n'a aucune incidence sur le présent.
Donc, oui, vous pouvez envoyer un objet sérialisé comme un message, à condition que vous écrivez tous les octets de sa représentation sérialisée à la conduite, en un seul appel à l' PipeStream.Write()
.