Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Costruttore AnonymousPipeServerStream (PipeDirection, HandleInheritability)

 

Data di pubblicazione: ottobre 2016

Inizializza una nuova istanza di AnonymousPipeServerStream classe con la modalità di ereditarietà e la direzione della pipe.

Spazio dei nomi:   System.IO.Pipes
Assembly:  System.Core (in System.Core.dll)

public AnonymousPipeServerStream(
	PipeDirection direction,
	HandleInheritability inheritability
)

Parametri

direction
Type: System.IO.Pipes.PipeDirection

Uno dei valori di enumerazione che determina la direzione della pipe.

Le unnamed pipe possono essere solo in una direzione, pertanto direction non può essere impostata su InOut.

inheritability
Type: System.IO.HandleInheritability

Uno dei valori di enumerazione che determina se l'handle sottostante può essere ereditato dai processi figlio. Deve essere impostata su None o Inheritable.

Exception Condition
ArgumentOutOfRangeException

inheritability non è impostata su None o Inheritable.

NotSupportedException

direction è impostato su InOut.

Oggetto PipeDirection valore InOut non è supportato poiché le unnamed pipe vengono definite come unidirezionali.

Questo costruttore crea un AnonymousPipeServerStream oggetto con la dimensione del buffer e nessuna sicurezza della pipe.

Nell'esempio seguente viene illustrato un metodo per inviare una stringa da un processo padre a un processo figlio utilizzando le unnamed pipe. In questo esempio, un AnonymousPipeServerStream viene creato l'oggetto in un processo padre con un PipeDirection valore Out.

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

class PipeServer
{
    static void Main()
    {
        Process pipeClient = new Process();

        pipeClient.StartInfo.FileName = "pipeClient.exe";

        using (AnonymousPipeServerStream pipeServer =
            new AnonymousPipeServerStream(PipeDirection.Out,
            HandleInheritability.Inheritable))
        {
            // Show that anonymous pipes do not support Message mode.
            try
            {
                Console.WriteLine("[SERVER] Setting ReadMode to \"Message\".");
                pipeServer.ReadMode = PipeTransmissionMode.Message;
            }
            catch (NotSupportedException e)
            {
                Console.WriteLine("[SERVER] Exception:\n    {0}", e.Message);
            }

            Console.WriteLine("[SERVER] Current TransmissionMode: {0}.",
                pipeServer.TransmissionMode);

            // Pass the client process a handle to the server.
            pipeClient.StartInfo.Arguments =
                pipeServer.GetClientHandleAsString();
            pipeClient.StartInfo.UseShellExecute = false;
            pipeClient.Start();

            pipeServer.DisposeLocalCopyOfClientHandle();

            try
            {
                // Read user input and send that to the client process.
                using (StreamWriter sw = new StreamWriter(pipeServer))
                {
                    sw.AutoFlush = true;
                    // Send a 'sync message' and wait for client to receive it.
                    sw.WriteLine("SYNC");
                    pipeServer.WaitForPipeDrain();
                    // Send the console input to the client process.
                    Console.Write("[SERVER] Enter text: ");
                    sw.WriteLine(Console.ReadLine());
                }
            }
            // Catch the IOException that is raised if the pipe is broken
            // or disconnected.
            catch (IOException e)
            {
                Console.WriteLine("[SERVER] Error: {0}", e.Message);
            }
        }

        pipeClient.WaitForExit();
        pipeClient.Close();
        Console.WriteLine("[SERVER] Client quit. Server terminating.");
    }
}

Demand

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

.NET Framework
Disponibile da 3.5
Torna all'inizio
Mostra: