AnonymousPipeServerStream Klass

Definition

Exponerar en ström runt ett anonymt rör som stöder både synkrona och asynkrona läs- och skrivåtgärder.

public ref class AnonymousPipeServerStream sealed : System::IO::Pipes::PipeStream
public sealed class AnonymousPipeServerStream : System.IO.Pipes.PipeStream
type AnonymousPipeServerStream = class
    inherit PipeStream
Public NotInheritable Class AnonymousPipeServerStream
Inherits PipeStream
Arv
AnonymousPipeServerStream
Arv
AnonymousPipeServerStream

Exempel

I följande exempel skickas en sträng från en överordnad process till en underordnad process med hjälp av anonyma pipes. Det här exemplet skapar ett AnonymousPipeServerStream objekt i en överordnad process med värdet PipeDirectionPipeDirection.Out. Det skapar också ett AnonymousPipeClientStream objekt i en underordnad process med värdet PipeDirectionPipeDirection.In. Den överordnade processen skickar sedan en användarangiven sträng till den underordnade processen. Strängen visas i konsolen.

Det här exemplet är för serverprocessen, som använder AnonymousPipeServerStream -klassen. Hela kodexemplet, inklusive koden för både pipe-klienten och servern, finns i How to: Use Anonymous Pipes for Local Interprocess Communication (Så här använder du anonyma pipes för lokal interprocesskommunikation).

//<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>
'<snippet01>
Imports System.IO
Imports System.IO.Pipes
Imports System.Diagnostics

Class PipeServer
    Shared Sub Main()
        Dim pipeClient As New Process()

        pipeClient.StartInfo.FileName = "pipeClient.exe"

        Using pipeServer As 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 sw As 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())
                End Using
            Catch e As IOException
                ' Catch the IOException that is raised if the pipe is broken
                ' or disconnected.
                Console.WriteLine("[SERVER] Error: {0}", e.Message)
            End Try
        End Using

        pipeClient.WaitForExit()
        pipeClient.Close()
        Console.WriteLine("[SERVER] Client quit. Server terminating.")
    End Sub
End Class
'</snippet01>

Kommentarer

Anonyma rör hjälper till att tillhandahålla säker kommunikation mellan underordnade och överordnade processer. Klassen AnonymousPipeServerStream gör det möjligt för en överordnad process att skicka eller ta emot information från en underordnad process.

Anonyma rör är namnlösa, enkelriktade rör som vanligtvis överför data mellan överordnade och underordnade processer. Anonyma rör är alltid lokala; De kan inte användas via ett nätverk. Ett PipeDirection värde för InOut stöds inte eftersom anonyma rör definieras som enkelriktade.

Anonyma rör stöder PipeTransmissionMode.Message inte läsläge.

Klientsidan för ett anonymt rör måste skapas från ett rörhandtag som tillhandahålls av serversidan genom att anropa GetClientHandleAsString metoden. Strängen skickas sedan som en parameter när klientprocessen skapas. Från klientprocessen skickas den sedan till AnonymousPipeClientStream konstruktorn som pipeHandleAsString parameter.

Objektet AnonymousPipeServerStream måste ta bort klienthandtaget DisposeLocalCopyOfClientHandle med hjälp av metoden för att meddelas när klienten avslutas.

Konstruktorer

Name Description
AnonymousPipeServerStream()

Initierar en ny instans av AnonymousPipeServerStream klassen.

AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity)

Initierar en ny instans av AnonymousPipeServerStream klassen med angiven rörriktning, ärvbarhetsläge, buffertstorlek och rörsäkerhet.

AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32)

Initierar en ny instans av AnonymousPipeServerStream klassen med angiven rörriktning, ärvbarhetsläge och buffertstorlek.

AnonymousPipeServerStream(PipeDirection, HandleInheritability)

Initierar en ny instans av AnonymousPipeServerStream klassen med angiven rörriktning och ärvbarhetsläge.

AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle)

Initierar en ny instans av AnonymousPipeServerStream klassen från de angivna rörhandtagen.

AnonymousPipeServerStream(PipeDirection)

Initierar en ny instans av AnonymousPipeServerStream klassen med angiven rörriktning.

Egenskaper

Name Description
CanRead

Hämtar ett värde som anger om den aktuella strömmen stöder läsåtgärder.

(Ärvd från PipeStream)
CanSeek

Hämtar ett värde som anger om den aktuella strömmen stöder sökåtgärder.

(Ärvd från PipeStream)
CanTimeout

Hämtar ett värde som avgör om den aktuella strömmen kan överskrida tidsgränsen.

(Ärvd från Stream)
CanWrite

Hämtar ett värde som anger om den aktuella strömmen stöder skrivåtgärder.

(Ärvd från PipeStream)
ClientSafePipeHandle

Hämtar det säkra handtaget för objektet AnonymousPipeClientStream som för närvarande är anslutet AnonymousPipeServerStream till objektet.

InBufferSize

Hämtar storleken, i byte, på den inkommande bufferten för ett rör.

(Ärvd från PipeStream)
IsAsync

Hämtar ett värde som anger om ett PipeStream objekt öppnades asynkront eller synkront.

(Ärvd från PipeStream)
IsConnected

Hämtar eller anger ett värde som anger om ett PipeStream objekt är anslutet.

(Ärvd från PipeStream)
IsHandleExposed

Hämtar ett värde som anger om ett handtag för ett PipeStream objekt exponeras.

(Ärvd från PipeStream)
IsMessageComplete

Hämtar ett värde som anger om det finns mer data i meddelandet som returneras från den senaste läsåtgärden.

(Ärvd från PipeStream)
Length

Hämtar längden på en ström, i byte.

(Ärvd från PipeStream)
OutBufferSize

Hämtar storleken, i byte, på den utgående bufferten för ett rör.

(Ärvd från PipeStream)
Position

Hämtar eller anger aktuell position för den aktuella strömmen.

(Ärvd från PipeStream)
ReadMode

Anger läsläge för AnonymousPipeServerStream objektet. För anonyma rör måste överföringsläget vara Byte.

ReadTimeout

Hämtar eller anger ett värde i millisekunder som avgör hur länge strömmen ska försöka läsa innan tidsgränsen nås.

(Ärvd från Stream)
SafePipeHandle

Hämtar det säkra handtaget för den lokala änden av röret som det aktuella PipeStream objektet kapslar in.

(Ärvd från PipeStream)
TransmissionMode

Hämtar det röröverföringsläge som stöds av det aktuella röret.

WriteTimeout

Hämtar eller anger ett värde i millisekunder som avgör hur länge strömmen ska försöka skriva innan tidsgränsen nås.

(Ärvd från Stream)

Metoder

Name Description
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Påbörjar en asynkron läsåtgärd.

(Ärvd från PipeStream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Påbörjar en asynkron skrivåtgärd.

(Ärvd från PipeStream)
CheckPipePropertyOperations()

Verifierar att röret är i rätt tillstånd för att hämta eller ange egenskaper.

(Ärvd från PipeStream)
CheckReadOperations()

Verifierar att röret är i ett anslutet tillstånd för läsåtgärder.

(Ärvd från PipeStream)
CheckWriteOperations()

Verifierar att röret är i ett anslutet tillstånd för skrivåtgärder.

(Ärvd från PipeStream)
Close()

Stänger den aktuella strömmen och släpper alla resurser (till exempel socketar och filhandtag) som är associerade med den aktuella strömmen. I stället för att anropa den här metoden kontrollerar du att dataströmmen tas bort korrekt.

(Ärvd från Stream)
CopyTo(Stream, Int32)

Läser byteen från den aktuella strömmen och skriver dem till en annan ström med en angiven buffertstorlek. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyTo(Stream)

Läser byteen från den aktuella strömmen och skriver dem till en annan ström. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyToAsync(Stream, CancellationToken)

Läser asynkront byte från den aktuella strömmen och skriver dem till en annan ström med hjälp av en angiven annulleringstoken. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Läser asynkront byte från den aktuella strömmen och skriver dem till en annan dataström med en angiven buffertstorlek och annulleringstoken. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyToAsync(Stream, Int32)

Läser asynkront byte från den aktuella strömmen och skriver dem till en annan ström med en angiven buffertstorlek. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CopyToAsync(Stream)

Läser asynkront byte från den aktuella strömmen och skriver dem till en annan ström. Båda strömmarnas positioner avanceras av antalet kopierade byte.

(Ärvd från Stream)
CreateObjRef(Type)

Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt.

(Ärvd från MarshalByRefObject)
CreateWaitHandle()
Föråldrad.
Föråldrad.
Föråldrad.

Allokerar ett WaitHandle objekt.

(Ärvd från Stream)
Dispose()

Släpper alla resurser som används av Stream.

(Ärvd från Stream)
Dispose(Boolean)

Släpper de ohanterade resurser som används av PipeStream klassen och släpper eventuellt de hanterade resurserna.

(Ärvd från PipeStream)
DisposeAsync()

Asynkront släpper de ohanterade resurser som används av Stream.

(Ärvd från Stream)
DisposeLocalCopyOfClientHandle()

Stänger den lokala kopian AnonymousPipeClientStream av objektets handtag.

EndRead(IAsyncResult)

Avslutar en väntande asynkron läsbegäran.

(Ärvd från PipeStream)
EndWrite(IAsyncResult)

Avslutar en väntande asynkron skrivbegäran.

(Ärvd från PipeStream)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
Finalize()

Frigör ohanterade resurser och utför andra rensningsåtgärder innan instansen AnonymousPipeServerStream frigörs av skräpinsamling.

Flush()

Rensar bufferten för den aktuella strömmen och gör att buffrade data skrivs till den underliggande enheten.

(Ärvd från PipeStream)
FlushAsync()

Rensar asynkront alla buffertar för den här strömmen och gör att buffrade data skrivs till den underliggande enheten.

(Ärvd från Stream)
FlushAsync(CancellationToken)

Rensar asynkront bufferten för den aktuella strömmen och gör att buffrade data skrivs till den underliggande enheten.

(Ärvd från PipeStream)
GetAccessControl()

Hämtar ett PipeSecurity objekt som kapslar in ACL-posterna (åtkomstkontrollistan) för röret som beskrivs av det aktuella PipeStream objektet.

(Ärvd från PipeStream)
GetClientHandleAsString()

Hämtar det anslutna AnonymousPipeClientStream objektets handtag som en sträng.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetLifetimeService()
Föråldrad.

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeHandle(SafePipeHandle, Boolean, Boolean)

Initierar ett PipeStream objekt från det angivna SafePipeHandle objektet.

(Ärvd från PipeStream)
InitializeLifetimeService()
Föråldrad.

Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MemberwiseClone(Boolean)

Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet.

(Ärvd från MarshalByRefObject)
ObjectInvariant()
Föråldrad.

Tillhandahåller stöd för en Contract.

(Ärvd från Stream)
Read(Byte[], Int32, Int32)

Läser ett block med byte från en dataström och skriver data till en angiven buffert som börjar på en angiven position för en angiven längd.

(Ärvd från PipeStream)
Read(Span<Byte>)

Läser en sekvens med byte från den aktuella strömmen, skriver dem till en bytematris och avancerar positionen i dataströmmen med antalet lästa byte.

(Ärvd från PipeStream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Läser asynkront en sekvens med byte från den aktuella strömmen till en bytematris som börjar vid en angiven position för ett angivet antal byte, avancerar positionen i strömmen med antalet lästa byte och övervakar begäranden om annullering.

(Ärvd från PipeStream)
ReadAsync(Byte[], Int32, Int32)

Läser asynkront en sekvens med byte från den aktuella strömmen och avancerar positionen i strömmen med antalet lästa byte.

(Ärvd från Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Läser asynkront en sekvens med byte från den aktuella strömmen, skriver dem till ett byteminnesintervall, avancerar positionen i strömmen med antalet lästa byte och övervakar begäranden om annullering.

(Ärvd från PipeStream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Läser minst ett minsta antal byte från den aktuella strömmen och avancerar positionen i dataströmmen med antalet lästa byte.

(Ärvd från Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Läser asynkront minst ett minsta antal byte från den aktuella strömmen, avancerar positionen i strömmen med antalet lästa byte och övervakar begäranden om annullering.

(Ärvd från Stream)
ReadByte()

Läser en byte från ett rör.

(Ärvd från PipeStream)
ReadExactly(Byte[], Int32, Int32)

count Läser antalet byte från den aktuella strömmen och flyttar positionen i dataströmmen.

(Ärvd från Stream)
ReadExactly(Span<Byte>)

Läser byte från den aktuella strömmen och flyttar positionen i dataströmmen tills den buffer är fylld.

(Ärvd från Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Läser count asynkront antalet byte från den aktuella strömmen, flyttar positionen i strömmen och övervakar begäranden om annullering.

(Ärvd från Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Läser asynkront byte från den aktuella strömmen, flyttar positionen i strömmen tills den buffer är fylld och övervakar begäranden om annullering.

(Ärvd från Stream)
Seek(Int64, SeekOrigin)

Anger aktuell position för den aktuella strömmen till det angivna värdet.

(Ärvd från PipeStream)
SetAccessControl(PipeSecurity)

Tillämpar de poster i åtkomstkontrollistan (ACL) som anges av ett PipeSecurity objekt på den pipe som anges av det aktuella PipeStream objektet.

(Ärvd från PipeStream)
SetLength(Int64)

Anger längden på den aktuella strömmen till det angivna värdet.

(Ärvd från PipeStream)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
WaitForPipeDrain()

Väntar på att den andra änden av röret ska läsa alla skickade byte.

(Ärvd från PipeStream)
Write(Byte[], Int32, Int32)

Skriver ett byteblock till den aktuella strömmen med data från en buffert.

(Ärvd från PipeStream)
Write(ReadOnlySpan<Byte>)

Skriver en sekvens med byte till den aktuella strömmen och avancerar den aktuella positionen i den här strömmen med antalet skrivna byte.

(Ärvd från PipeStream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Skriver asynkront ett angivet antal byte från en bytematris som börjar på en angiven position, avancerar den aktuella positionen i den här strömmen med antalet skrivna byte och övervakar begäranden om annullering.

(Ärvd från PipeStream)
WriteAsync(Byte[], Int32, Int32)

Skriver asynkront en sekvens med byte till den aktuella strömmen och avancerar den aktuella positionen i den här strömmen med antalet skrivna byte.

(Ärvd från Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Skriver asynkront en sekvens med byte till den aktuella strömmen, avancerar den aktuella positionen i den här strömmen med antalet skrivna byte och övervakar begäranden om annullering.

(Ärvd från PipeStream)
WriteByte(Byte)

Skriver en byte till den aktuella strömmen.

(Ärvd från PipeStream)

Tilläggsmetoder

Name Description
ConfigureAwait(IAsyncDisposable, Boolean)

Konfigurerar hur väntar på de uppgifter som returneras från en asynkron disponibel ska utföras.

CopyToAsync(Stream, PipeWriter, CancellationToken)

Läser asynkront byteen från Stream och skriver dem till den angivna PipeWriter, med hjälp av en annulleringstoken.

GetAccessControl(PipeStream)

Returnerar säkerhetsinformationen för en rörström.

SetAccessControl(PipeStream, PipeSecurity)

Ändrar säkerhetsattributen för en befintlig rörström.

Gäller för