AnonymousPipeClientStream Classe

Definição

Expõe o lado do cliente de um fluxo de pipe anônimo, que dá suporte a operações de leitura e gravação síncronas e assíncronas (sem suporte de cancelamento em plataformas de Windows).

public ref class AnonymousPipeClientStream sealed : System::IO::Pipes::PipeStream
public sealed class AnonymousPipeClientStream : System.IO.Pipes.PipeStream
type AnonymousPipeClientStream = class
    inherit PipeStream
Public NotInheritable Class AnonymousPipeClientStream
Inherits PipeStream
Herança
AnonymousPipeClientStream
Herança
AnonymousPipeClientStream

Exemplos

O exemplo a seguir envia uma cadeia de caracteres de um processo pai para um processo filho usando pipes anônimos. Este exemplo cria um objeto AnonymousPipeServerStream em um processo pai com um valor PipeDirection de Out. Ele também cria um AnonymousPipeClientStream objeto em um processo filho com um PipeDirection valor de In. Em seguida, o processo pai envia uma cadeia de caracteres fornecida pelo usuário ao processo filho. A cadeia de caracteres é exibida no console.

Este exemplo é para o processo do cliente, que é iniciado pelo processo do servidor. Nomeie o executável resultante do código pipeClient.exe do cliente e copie-o para o mesmo diretório que o executável do servidor ao executar este exemplo. Para obter todo o exemplo de código, incluindo o código para o cliente de pipe e o servidor, consulte Como usar pipes anônimos para comunicação entre processos locais.

//<snippet01>
#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]);

            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);
}
//</snippet01>
//<snippet01>
using System;
using System.IO;
using System.IO.Pipes;

class PipeClient
{
    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            using (PipeStream pipeClient =
                new AnonymousPipeClientStream(PipeDirection.In, args[0]))
            {
                Console.WriteLine("[CLIENT] Current TransmissionMode: {0}.",
                   pipeClient.TransmissionMode);

                using (StreamReader sr = new 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()) != null)
                    {
                        Console.WriteLine("[CLIENT] Echo: " + temp);
                    }
                }
            }
        }
        Console.Write("[CLIENT] Press Enter to continue...");
        Console.ReadLine();
    }
}
//</snippet01>
'<snippet01>
Imports System.IO
Imports System.IO.Pipes

Class PipeClient
    Shared Sub Main(args() as String)
        If args.Length > 0 Then
            Using pipeClient As New AnonymousPipeClientStream(PipeDirection.In, args(0))
                Console.WriteLine("[CLIENT] Current TransmissionMode: {0}.", _
                   pipeClient.TransmissionMode)

                Using sr As New StreamReader(pipeClient)
                    ' Display the read text to the console
                    Dim temp As String

                    ' Wait for 'sync message' from the server.
                    Do
                        Console.WriteLine("[CLIENT] Wait for sync...")
                        temp = sr.ReadLine()
                    Loop While temp.StartsWith("SYNC") = False

                    ' Read the server data and echo to the console.
                    temp = sr.ReadLine()
                    While Not temp = Nothing
                        Console.WriteLine("[CLIENT] Echo: " + temp)
                        temp = sr.ReadLine()
                    End While
                End Using
            End Using
        End If
        Console.Write("[CLIENT] Press Enter to continue...")
        Console.ReadLine()
    End Sub
End Class
'</snippet01>

Comentários

Os pipes anônimos ajudam a fornecer comunicação de interprocesso segura e segura entre processos filho e pai. A AnonymousPipeClientStream classe permite que um processo filho se conecte e troque informações com um processo pai.

Os pipes anônimos são pipes unidirecionais sem nome que normalmente transferem dados entre processos pai e filho. Pipes anônimos são sempre locais; eles não podem ser usados em uma rede. Não PipeDirection há suporte para um valor porque InOut os pipes anônimos são definidos como unidirecionais.

Os pipes anônimos não dão suporte ao PipeTransmissionMode.Message modo de leitura.

O lado do cliente de um pipe anônimo deve ser criado a partir de um identificador de pipe fornecido pelo lado do servidor chamando o GetClientHandleAsString método. Em seguida, a cadeia de caracteres é passada como um parâmetro ao criar o processo do cliente. No processo do cliente, ele é passado para o AnonymousPipeClientStream construtor como o pipeHandleAsString parâmetro.

Em Windows, não há suporte para operações de leitura e gravação assíncronas (sobrepostas) por pipes anônimos (consulte https://docs.microsoft.com/en-us/windows/win32/ipc/anonymous-pipe-operations). A AnonymousPipeClientStream classe ainda agendará o trabalho no pool de threads em plataformas Windows para que as operações assíncronas Stream funcionem, mas não há suporte para o cancelamento dessas operações.

Construtores

AnonymousPipeClientStream(PipeDirection, SafePipeHandle)

Inicializa uma nova instância da classe AnonymousPipeClientStream do identificador especificado.

AnonymousPipeClientStream(PipeDirection, String)

Inicializa uma nova instância da classe AnonymousPipeClientStream com a direção do pipe especificada e uma representação de cadeia de caracteres do identificador do pipe.

AnonymousPipeClientStream(String)

Inicializa uma nova instância da classe AnonymousPipeClientStream com a representação especificada da cadeia de caracteres do identificador do pipe.

Propriedades

CanRead

Obtém um valor que indica se o fluxo atual dá suporte a operações de leitura.

(Herdado de PipeStream)
CanSeek

Obtém um valor que indica se o fluxo atual dá suporte a operações de espiada.

(Herdado de PipeStream)
CanTimeout

Obtém um valor que determina se o fluxo atual pode atingir o tempo limite.

(Herdado de Stream)
CanWrite

Obtém um valor que indica se o fluxo atual dá suporte a operações de gravação.

(Herdado de PipeStream)
InBufferSize

Obtém o tamanho, em bytes, do buffer de entrada para um pipe.

(Herdado de PipeStream)
IsAsync

Obtém um valor que indica se um objeto PipeStream foi aberto de maneira assíncrona ou síncrona.

(Herdado de PipeStream)
IsConnected

Obtém ou define um valor que indica se um objeto PipeStream está conectado.

(Herdado de PipeStream)
IsHandleExposed

Obtém um valor que indica se um identificador para um objeto PipeStream é exposto.

(Herdado de PipeStream)
IsMessageComplete

Obtém um valor que indica se há mais dados na mensagem retornada da operação de leitura mais recente.

(Herdado de PipeStream)
Length

Obtém o comprimento de um fluxo, em bytes.

(Herdado de PipeStream)
OutBufferSize

Obtém o tamanho, em bytes, do buffer de saída para um pipe.

(Herdado de PipeStream)
Position

Obtém ou define a posição atual do fluxo atual.

(Herdado de PipeStream)
ReadMode

Define o modo de leitura para o objeto AnonymousPipeClientStream.

ReadTimeout

Obtém ou define um valor, em milissegundos, que determina por quanto tempo o fluxo tentará realizar a leitura antes do tempo limite.

(Herdado de Stream)
SafePipeHandle

Obtém o identificador seguro para a extremidade local do pipe encapsulado pelo objeto PipeStream atual.

(Herdado de PipeStream)
TransmissionMode

Obtém o modo de transmissão de pipe para o qual o pipe atual dá suporte.

WriteTimeout

Obtém ou define um valor, em milissegundos, que determina por quanto tempo o fluxo tentará realizar a gravação antes do tempo limite.

(Herdado de Stream)

Métodos

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

Inicia uma operação de leitura assíncrona.

(Herdado de PipeStream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de gravação assíncrona.

(Herdado de PipeStream)
CheckPipePropertyOperations()

Verifica se o pipe está no estado correto para obter ou definir propriedades.

(Herdado de PipeStream)
CheckReadOperations()

Verifica se o pipe está em um estado conectado para operações de leitura.

(Herdado de PipeStream)
CheckWriteOperations()

Verifica se o pipe está em um estado conectado para operações de gravação.

(Herdado de PipeStream)
Close()

Fecha o fluxo atual e libera todos os recursos (como soquetes e identificadores de arquivos) associados ao fluxo atual. Em vez de chamar esse método, verifique se o fluxo é descartado corretamente.

(Herdado de Stream)
CopyTo(Stream)

Lê os bytes do fluxo atual e os grava em outro fluxo.

(Herdado de Stream)
CopyTo(Stream, Int32)

Lê os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado.

(Herdado de Stream)
CopyToAsync(Stream)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo.

(Herdado de Stream)
CopyToAsync(Stream, CancellationToken)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um token de cancelamento especificado.

(Herdado de Stream)
CopyToAsync(Stream, Int32)

Lê de maneira assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado.

(Herdado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado e um token de cancelamento.

(Herdado de Stream)
CreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
CreateWaitHandle()
Obsoleto.
Obsoleto.

Aloca um objeto WaitHandle.

(Herdado de Stream)
Dispose()

Libera todos os recursos usados pelo Stream.

(Herdado de Stream)
Dispose(Boolean)

Libera os recursos não gerenciados usados pela classe PipeStream e, opcionalmente, libera os recursos gerenciados.

(Herdado de PipeStream)
DisposeAsync()

Libera de forma assíncrona os recursos não gerenciados usados pelo Stream.

(Herdado de Stream)
EndRead(IAsyncResult)

Encerra uma solicitação de leitura assíncrona pendente.

(Herdado de PipeStream)
EndWrite(IAsyncResult)

Encerra uma solicitação de gravação assíncrona pendente.

(Herdado de PipeStream)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Finalize()

Libera recursos não gerenciados e executa outras operações de limpeza antes que a instância AnonymousPipeClientStream seja recuperada pela coleta de lixo.

Flush()

Limpa o buffer para o fluxo atual e faz com que todos os dados armazenados em buffer sejam gravados no dispositivo subjacente.

(Herdado de PipeStream)
FlushAsync()

Limpa de forma assíncrona todos os buffers nesse fluxo e faz com que os dados armazenados em buffer sejam gravados no dispositivo subjacente.

(Herdado de Stream)
FlushAsync(CancellationToken)

Limpa de modo assíncrono o buffer para o fluxo atual e faz com que todos os dados armazenados em buffer sejam gravados no dispositivo subjacente.

(Herdado de PipeStream)
GetAccessControl()

Obtém um objeto PipeSecurity que encapsula as entradas da ACL (lista de controle de acesso) para o pipe descrito pelo objeto PipeStream atual.

(Herdado de PipeStream)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetLifetimeService()
Obsoleto.

Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeHandle(SafePipeHandle, Boolean, Boolean)

Inicializa um objeto PipeStream usando o objeto SafePipeHandle especificado.

(Herdado de PipeStream)
InitializeLifetimeService()
Obsoleto.

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.

(Herdado de MarshalByRefObject)
ObjectInvariant()
Obsoleto.

Oferece suporte a um Contract.

(Herdado de Stream)
Read(Byte[], Int32, Int32)

Lê um bloco de bytes de um fluxo e grava os dados em um buffer especificado, começando em uma posição especificada para um tamanho especificado.

(Herdado de PipeStream)
Read(Span<Byte>)

Lê uma sequência de bytes do fluxo em buffer atual, grava-os em uma matriz de bytes e avança a posição no fluxo até o número de bytes lidos.

(Herdado de PipeStream)
ReadAsync(Byte[], Int32, Int32)

Lê uma sequência de bytes do fluxo atual de forma assíncrona e avança a posição no fluxo até o número de bytes lidos.

(Herdado de Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lê de forma assíncrona uma sequência de bytes do fluxo em buffer atual para uma matriz de bytes começando em uma posição especificada de um número especificado de bytes, avança a posição no fluxo até o número de bytes lidos e monitora as solicitações de cancelamento.

(Herdado de PipeStream)
ReadAsync(Memory<Byte>, CancellationToken)

Lê de forma assíncrona uma sequência de bytes do fluxo em buffer atual, grava-os em um intervalo de memória de bytes, avança a posição no fluxo até o número de bytes lidos e monitora as solicitações de cancelamento.

(Herdado de PipeStream)
ReadByte()

Lê um byte de um pipe.

(Herdado de PipeStream)
Seek(Int64, SeekOrigin)

Define a posição atual do fluxo atual para o valor especificado.

(Herdado de PipeStream)
SetAccessControl(PipeSecurity)

Aplica as entradas de ACL (lista de controle de acesso) especificadas por um objeto PipeSecurity ao pipe especificado pelo objeto PipeStream atual.

(Herdado de PipeStream)
SetLength(Int64)

Define o comprimento do fluxo atual para o valor especificado.

(Herdado de PipeStream)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
WaitForPipeDrain()

Aguarda até que o outro participante do pipe leia todos os bytes enviados.

(Herdado de PipeStream)
Write(Byte[], Int32, Int32)

Grava um bloco de bytes no fluxo atual usando os dados de um buffer.

(Herdado de PipeStream)
Write(ReadOnlySpan<Byte>)

Grava uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes gravados.

(Herdado de PipeStream)
WriteAsync(Byte[], Int32, Int32)

Grava assincronamente uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo no número de bytes gravados.

(Herdado de Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Grava de forma assíncrona um número especificado de bytes de uma matriz de bytes começando em uma posição especificada, avança a posição atual nesse fluxo até o número de bytes gravados e monitora solicitações de cancelamento.

(Herdado de PipeStream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Grava uma sequência de bytes no fluxo atual assincronamente, avança a posição atual dentro desse fluxo pelo número de bytes gravados e monitora as solicitações de cancelamento.

(Herdado de PipeStream)
WriteByte(Byte)

Grava um byte no fluxo atual.

(Herdado de PipeStream)

Métodos de Extensão

GetAccessControl(PipeStream)

Retorna as informações de segurança de um fluxo de pipe.

SetAccessControl(PipeStream, PipeSecurity)

Altera os atributos de segurança de um fluxo de pipe existente.

ConfigureAwait(IAsyncDisposable, Boolean)

Configura como as esperas nas tarefas retornadas de um descartável assíncrono são realizadas.

Aplica-se a