AnonymousPipeClientStream::TransmissionMode Property

 

Gets the pipe transmission mode supported by the current pipe.

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

public:
property PipeTransmissionMode TransmissionMode {
	[SecurityCriticalAttribute]
	virtual PipeTransmissionMode get() override;
}

Property Value

Type: System.IO.Pipes::PipeTransmissionMode

The PipeTransmissionMode supported by the current pipe.

Anonymous pipes do not support Message read mode.

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 and the TransmissionMode is displayed to the console.

#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);
}

.NET Framework
Available since 3.5
Return to top
Show: