AnonymousPipeClientStream Constructor (PipeDirection, String^)

 

Initializes a new instance of the AnonymousPipeClientStream class with the specified pipe direction and a string representation of the pipe handle.

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

public:
[SecurityCriticalAttribute]
AnonymousPipeClientStream(
	PipeDirection direction,
	String^ pipeHandleAsString
)

Parameters

direction
Type: System.IO.Pipes::PipeDirection

One of the enumeration values that determines the direction of the pipe.

Anonymous pipes can only be in one direction, so direction cannot be set to InOut.

pipeHandleAsString
Type: System::String^

A string that represents the pipe handle.

Exception Condition
ArgumentException

pipeHandleAsString is an invalid handle.

ArgumentNullException

pipeHandleAsString is null.

NotSupportedException

direction is set to InOut.

A PipeDirection value of InOut is not supported because anonymous pipes are defined to be one-way.

The following example demonstrates a way to send a string from a parent process to a child process by using anonymous pipes. In this example, an AnonymousPipeClientStream object is created in a child process with a PipeDirection value of In.

#using <System.Core.dll>

using namespace System;
using namespace System::IO;
using namespace System::IO::Pipes;

ref class PipeClient
{
public:
    static void Main(array<String^>^ args)
    {
        if (args->Length > 1)
        {
            PipeStream^ pipeClient = gcnew AnonymousPipeClientStream(PipeDirection::In, args[1]);
            // Show that anonymous Pipes do not support Message mode.
            try
            {
                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}.",
                pipeClient->TransmissionMode);

            StreamReader^ sr = gcnew StreamReader(pipeClient);

            // Display the read text to the console
            String^ temp;

            // Wait for 'sync message' from the server.
            do
            {
                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()) != nullptr)
            {
                Console::WriteLine("[CLIENT] Echo: " + temp);
            }
            sr->Close();
            pipeClient->Close();
        }
        Console::Write("[CLIENT] Press Enter to continue...");
        Console::ReadLine();
    }
};

int main()
{
    array<String^>^ args = Environment::GetCommandLineArgs();
    PipeClient::Main(args);
}

Demand

for full trust for the immediate caller. This member cannot be used by partially trusted code.

.NET Framework
Available since 3.5
Return to top
Show: