AnonymousPipeClientStream Class

AnonymousPipeClientStream Class

Exposes the client side of an anonymous pipe stream, which supports both synchronous and asynchronous read and write operations.

Namespace:  System.IO.Pipes
Assembly:  System.Core (in System.Core.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class AnonymousPipeClientStream : PipeStream


The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: MayLeakOnAbort. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.

Anonymous pipes help provide safe and secure interprocess communication between child and parent processes. The AnonymousPipeClientStream class enables a child process to connect to and exchange information with a parent process.

Anonymous pipes are unnamed, one-way pipes that typically transfer data between parent and child processes. Anonymous pipes are always local; they cannot be used over a network. A PipeDirection value of InOut is not supported because anonymous pipes are defined to be one-way.

Anonymous pipes do not support Message read modes.

The client side of an anonymous pipe must be created from a pipe handle provided by the server side by calling the GetClientHandleAsString method. The string is then passed as a parameter when creating the client process. From the client process, it is passed to the AnonymousPipeClientStream constructor as the pipeHandleAsString parameter.


For , a maximum of 10 pipes can simultaneously connect over the network.

The following example demonstrates a way to send a string from a parent process to a child process by using anonymous pipes. This example creates an AnonymousPipeServerStream object in a parent process with a PipeDirection value of Out. It also creates an AnonymousPipeClientStream object in a child process with a PipeDirection value of In. The parent process then sends a user-supplied string to the child process. The string is displayed to the console.

This example is for the client process, which is started by the server process. Name the resulting executable from the client code pipeClient.exe and copy it to the same directory as the server executable when you run this example. For the entire code example, including the code for both the pipe client and server, see How to: Use Anonymous Pipes to Communicate Between Local Processes.

using System;
using System.IO;
using System.IO.Pipes;

class PipeClient
    static void Main(string[] args)
        if (args.Length > 0)
            using (PipeStream pipeClient =
                new AnonymousPipeClientStream(PipeDirection.In, args[0]))
                // Show that anonymous Pipes do not support Message mode. 
                    Console.WriteLine("[CLIENT] Setting ReadMode to \"Message\".");
                    pipeClient.ReadMode = PipeTransmissionMode.Message;
                catch (NotSupportedException e)
                    Console.WriteLine("[CLIENT] Execption:\n    {0}", e.Message);

                Console.WriteLine("[CLIENT] Current TransmissionMode: {0}.",

                using (StreamReader sr = new StreamReader(pipeClient))
                    // Display the read text to the console
                    string temp;

                    // Wait for 'sync message' from the server. 
                        Console.WriteLine("[CLIENT] Wait for sync...");
                        temp = sr.ReadLine();
                    while (!temp.StartsWith("SYNC"));

                    // Read the server data and echo to the console. 
                    while ((temp = sr.ReadLine()) != null)
                        Console.WriteLine("[CLIENT] Echo: " + temp);
        Console.Write("[CLIENT] Press Enter to continue...");


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5

Community Additions

© 2016 Microsoft