AnonymousPipeServerStream Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Expõe um fluxo em torno de um canal anónimo, que suporta operações de leitura e escrita síncronas e assíncronas.
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
- Herança
Exemplos
O exemplo seguinte envia uma string de um processo pai para um processo filho usando pipes anónimos. Este exemplo cria um AnonymousPipeServerStream objeto num processo pai com um PipeDirection valor de PipeDirection.Out. Também cria um AnonymousPipeClientStream objeto num processo filho com valor PipeDirection de PipeDirection.In. O processo pai envia então uma string fornecida pelo utilizador para o processo filho. A corda é apresentada na consola.
Este exemplo é para o processo servidor, que usa a AnonymousPipeServerStream classe. Para o exemplo completo do código, incluindo o código tanto para o cliente de pipe como para o servidor, veja Como: Usar Pipes Anónimos para Comunicação Local entre Processos.
//<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>
Observações
Os pipelines anónimos ajudam a proporcionar uma comunicação interprocesso segura e protegida entre processos da criança e dos pais. A AnonymousPipeServerStream classe permite que um processo pai envie ou receba informações de um processo filho.
Os pipelines anónimos são pipelines unidirecionais sem nome que normalmente transferem dados entre processos pais e filhos. Gaitas anónimas são sempre locais; não podem ser usados numa rede. Um PipeDirection valor de InOut não é suportado porque os pipes anónimos são definidos como unidirecionais.
Os pipes anónimos não suportam o PipeTransmissionMode.Message modo de leitura.
O lado cliente de um pipe anónimo deve ser criado a partir de um handle de pipe fornecido pelo lado do servidor, chamando o GetClientHandleAsString método. A cadeia é então passada como parâmetro ao criar o processo cliente. A partir do processo cliente, é então passado para o AnonymousPipeClientStream construtor como parâmetro pipeHandleAsString .
O AnonymousPipeServerStream objeto deve descartar o handle do cliente usando o DisposeLocalCopyOfClientHandle método para ser notificado quando o cliente sair.
Construtores
| Name | Description |
|---|---|
| AnonymousPipeServerStream() |
Inicializa uma nova instância da AnonymousPipeServerStream classe. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
Inicializa uma nova instância da AnonymousPipeServerStream classe com a direção do pipe especificada, modo de herdabilidade, tamanho do buffer e segurança do pipe. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
Inicializa uma nova instância da AnonymousPipeServerStream classe com a direção do pipe especificada, modo de herdabilidade e tamanho do buffer. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
Inicializa uma nova instância da AnonymousPipeServerStream classe com a direção do pipe e o modo de herdabilidade especificados. |
| AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
Inicializa uma nova instância da AnonymousPipeServerStream classe a partir dos handles de pipe especificados. |
| AnonymousPipeServerStream(PipeDirection) |
Inicializa uma nova instância da AnonymousPipeServerStream classe com a direção do pipe especificada. |
Propriedades
| Name | Description |
|---|---|
| CanRead |
Recebe um valor que indica se o fluxo atual suporta operações de leitura. (Herdado de PipeStream) |
| CanSeek |
Recebe um valor que indica se o fluxo atual suporta operações de procura. (Herdado de PipeStream) |
| CanTimeout |
Obtém um valor que determina se o fluxo atual pode expirar. (Herdado de Stream) |
| CanWrite |
Recebe um valor que indica se o fluxo atual suporta operações de escrita. (Herdado de PipeStream) |
| ClientSafePipeHandle |
Obtém a alavanca segura para o AnonymousPipeClientStream objeto que está atualmente ligado ao AnonymousPipeServerStream objeto. |
| InBufferSize |
Obtém o tamanho, em bytes, do buffer de entrada para um pipe. (Herdado de PipeStream) |
| IsAsync |
Recebe um valor que indica se um PipeStream objeto foi aberto de forma assíncrona ou síncrona. (Herdado de PipeStream) |
| IsConnected |
Obtém ou define um valor que indica se um PipeStream objeto está ligado. (Herdado de PipeStream) |
| IsHandleExposed |
Obtém um valor que indica se uma alça de um PipeStream objeto está exposta. (Herdado de PipeStream) |
| IsMessageComplete |
Recebe um valor que indica se há mais dados na mensagem devolvida 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 do AnonymousPipeServerStream objeto. Para tubos anónimos, o modo de transmissão deve ser Byte. |
| ReadTimeout |
Recebe ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará ler antes de expirar. (Herdado de Stream) |
| SafePipeHandle |
Obtém a alavanca segura para a extremidade local do tubo que o objeto atual PipeStream encapsula. (Herdado de PipeStream) |
| TransmissionMode |
Obtém o modo de transmissão do tubo que é suportado pelo tubo atual. |
| WriteTimeout |
Recebe ou define um valor, em milissegundos, que determina quanto tempo o fluxo tenta escrever antes de expirar. (Herdado de Stream) |
Métodos
| Name | Description |
|---|---|
| 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 escrita assíncrona. (Herdado de PipeStream) |
| CheckPipePropertyOperations() |
Verifica se o tubo está no estado adequado para obter ou definir propriedades. (Herdado de PipeStream) |
| CheckReadOperations() |
Verifica que o tubo está num estado de ligação para operações de leitura. (Herdado de PipeStream) |
| CheckWriteOperations() |
Verifica que o pipeline está num estado de ligação para operações de escrita. (Herdado de PipeStream) |
| Close() |
Fecha o fluxo atual e liberta quaisquer recursos (como sockets e handles de ficheiros) associados ao fluxo atual. Em vez de chamar este método, certifique-se de que o fluxo é devidamente descartado. (Herdado de Stream) |
| CopyTo(Stream, Int32) |
Lê os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
| CopyTo(Stream) |
Lê os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
| CopyToAsync(Stream, CancellationToken) |
Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um token de cancelamento especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
| CopyToAsync(Stream, Int32, CancellationToken) |
Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado e um token de cancelamento. As posições de ambos os fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
| CopyToAsync(Stream, Int32) |
Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
| CopyToAsync(Stream) |
Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| CreateWaitHandle() |
Obsoleto.
Aloca um WaitHandle objeto. (Herdado de Stream) |
| Dispose() |
Liberta todos os recursos utilizados pelo Stream. (Herdado de Stream) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pela PipeStream classe e, opcionalmente, liberta os recursos geridos. (Herdado de PipeStream) |
| DisposeAsync() |
De forma assíncrona, liberta os recursos não geridos usados pelos Stream. (Herdado de Stream) |
| DisposeLocalCopyOfClientHandle() |
Fecha a cópia local do AnonymousPipeClientStream handle do objeto. |
| EndRead(IAsyncResult) |
Termina um pedido de leitura assíncrono pendente. (Herdado de PipeStream) |
| EndWrite(IAsyncResult) |
Termina um pedido de escrita assíncrono pendente. (Herdado de PipeStream) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Finalize() |
Liberta recursos não geridos e realiza outras operações de limpeza antes de a AnonymousPipeServerStream instância ser recuperada pela recolha de lixo. |
| Flush() |
Limpa o buffer do fluxo atual e faz com que quaisquer dados em buffer sejam escritos no dispositivo subjacente. (Herdado de PipeStream) |
| FlushAsync() |
Apaga assíncronamente todos os buffers deste fluxo e faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente. (Herdado de Stream) |
| FlushAsync(CancellationToken) |
Apaga assíncronamente todos os buffers deste fluxo, faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente e monitoriza os pedidos de cancelamento. (Herdado de Stream) |
| GetAccessControl() |
Obtém um PipeSecurity objeto que encapsula as entradas da lista de controlo de acesso (ACL) para o tubo descrito pelo objeto atual PipeStream . (Herdado de PipeStream) |
| GetClientHandleAsString() |
Obtém o cabo do objeto ligado AnonymousPipeClientStream como uma cadeia. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Inicializa um PipeStream objeto a partir do objeto especificado SafePipeHandle . (Herdado de PipeStream) |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| ObjectInvariant() |
Obsoleto.
Fornece suporte para um Contract. (Herdado de Stream) |
| Read(Byte[], Int32, Int32) |
Lê um bloco de bytes de um fluxo e escreve os dados num buffer especificado a partir de uma posição determinada para um comprimento especificado. (Herdado de PipeStream) |
| Read(Span<Byte>) |
Lê uma sequência de bytes do fluxo atual, escreve-os num array de bytes e avança a posição dentro do fluxo pelo número de bytes lidos. (Herdado de PipeStream) |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
O Assíncrono lê uma sequência de bytes do fluxo atual para um array de bytes a partir de uma posição especificada para um número determinado de bytes, avança a posição dentro do fluxo pelo número de bytes lidos e monitoriza pedidos de cancelamento. (Herdado de PipeStream) |
| ReadAsync(Byte[], Int32, Int32) |
A leitura assíncrona uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos. (Herdado de Stream) |
| ReadAsync(Memory<Byte>, CancellationToken) |
O Assíncrono lê uma sequência de bytes do fluxo atual, escreve-os num intervalo de memória de bytes, avança a posição dentro do fluxo pelo número de bytes lidos e monitoriza pedidos de cancelamento. (Herdado de PipeStream) |
| ReadByte() |
Lê um byte de um canal. (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 da lista de controlo de acesso (ACL) especificadas por um PipeSecurity objeto ao tubo especificado pelo objeto atual PipeStream . (Herdado de PipeStream) |
| SetLength(Int64) |
Define o comprimento do fluxo atual para o valor especificado. (Herdado de PipeStream) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| WaitForPipeDrain() |
Espera que a outra extremidade do tubo leia todos os bytes enviados. (Herdado de PipeStream) |
| Write(Byte[], Int32, Int32) |
Escreve um bloco de bytes no fluxo atual usando dados de um buffer. (Herdado de PipeStream) |
| Write(ReadOnlySpan<Byte>) |
Escreve uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes escritos. (Herdado de PipeStream) |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Escreve assíncronamente um número especificado de bytes a partir de um array de bytes a partir de uma posição especificada, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento. (Herdado de PipeStream) |
| WriteAsync(Byte[], Int32, Int32) |
Escreve assíncronamente uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes escritos. (Herdado de Stream) |
| WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Escreve assíncronamente uma sequência de bytes no fluxo atual, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento. (Herdado de PipeStream) |
| WriteByte(Byte) |
Escreve um byte no fluxo atual. (Herdado de PipeStream) |
Métodos da Extensão
| Name | Description |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
Configura como aguarda nas tarefas devolvidas de um descartável assíncrono será realizada. |