Lire en anglais

Partager via


AnonymousPipeServerStream.DisposeLocalCopyOfClientHandle Méthode

Définition

Ferme la copie locale du handle de l’objet AnonymousPipeClientStream.

C#
public void DisposeLocalCopyOfClientHandle ();
C#
[System.Security.SecurityCritical]
public void DisposeLocalCopyOfClientHandle ();
Attributs

Exemples

L’exemple suivant montre un moyen d’envoyer une chaîne d’un processus parent à un processus enfant à l’aide de canaux anonymes. Dans cet exemple, un AnonymousPipeServerStream objet est créé dans un processus parent avec la PipeDirection valeur Out.

C#
//<snippet01>
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))
        {
            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.");
    }
}
//</snippet01>

Remarques

La DisposeLocalCopyOfClientHandle méthode doit être appelée une fois que le handle client a été passé au client. Si cette méthode n’est pas appelée, l’objet AnonymousPipeServerStream ne reçoit pas de notification lorsque le client supprime son PipeStream objet.

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1