AnonymousPipeServerStream Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Espone un flusso intorno a una pipe anonima, che supporta sia operazioni di lettura e scrittura sincrone che asincrone.
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
- Ereditarietà
- Ereditarietà
Esempio
Nell'esempio seguente viene inviata una stringa da un processo padre a un processo figlio usando pipe anonime. In questo esempio viene creato un AnonymousPipeServerStream oggetto in un processo padre con un PipeDirection valore .PipeDirection.Out Crea anche un AnonymousPipeClientStream oggetto in un processo figlio con un PipeDirection valore .PipeDirection.In Il processo padre invia quindi una stringa fornita dall'utente al processo figlio. La stringa viene visualizzata nella console.
Questo esempio è relativo al processo del server, che usa la AnonymousPipeServerStream classe . Per l'intero esempio di codice, incluso il codice per il client di pipe e il server, vedere Procedura: Usare le pipe anonime per la comunicazione interprocesso locale.
//<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>
Commenti
Le pipe anonime consentono di fornire comunicazioni interprocesso sicure e sicure tra processi figlio e padre. La AnonymousPipeServerStream classe consente a un processo padre di inviare o ricevere informazioni da un processo figlio.
Le pipe anonime sono pipe unidirezionale senza nome che in genere trasferiscono dati tra processi padre e figlio. Le pipe anonime sono sempre locali; non possono essere usati in rete. Il PipeDirection valore non InOut è supportato perché le pipe anonime sono definite come unidirezionale.
Le pipe anonime non supportano la PipeTransmissionMode.Message modalità di lettura.
Il lato client di una pipe anonima deve essere creato da un handle pipe fornito dal lato server chiamando il GetClientHandleAsString metodo . La stringa viene quindi passata come parametro durante la creazione del processo client. Dal processo client, viene quindi passato al AnonymousPipeClientStream costruttore come pipeHandleAsString parametro .
L'oggetto AnonymousPipeServerStream deve eliminare l'handle client usando il DisposeLocalCopyOfClientHandle metodo per ricevere una notifica quando il client viene chiuso.
Costruttori
| Nome | Descrizione |
|---|---|
| AnonymousPipeServerStream() |
Inizializza una nuova istanza della classe AnonymousPipeServerStream. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
Inizializza una nuova istanza della AnonymousPipeServerStream classe con la direzione della pipe, la modalità di ereditarietà, le dimensioni del buffer e la sicurezza della pipe specificate. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
Inizializza una nuova istanza della AnonymousPipeServerStream classe con la direzione della pipe, la modalità di ereditarietà e le dimensioni del buffer specificate. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
Inizializza una nuova istanza della AnonymousPipeServerStream classe con la direzione della pipe e la modalità di ereditabilità specificate. |
| AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
Inizializza una nuova istanza della AnonymousPipeServerStream classe dagli handle di pipe specificati. |
| AnonymousPipeServerStream(PipeDirection) |
Inizializza una nuova istanza della AnonymousPipeServerStream classe con la direzione della pipe specificata. |
Proprietà
| Nome | Descrizione |
|---|---|
| CanRead |
Ottiene un valore che indica se il flusso corrente supporta le operazioni di lettura. (Ereditato da PipeStream) |
| CanSeek |
Ottiene un valore che indica se il flusso corrente supporta le operazioni di ricerca. (Ereditato da PipeStream) |
| CanTimeout |
Ottiene un valore che determina se il flusso corrente può verificarsi un timeout. (Ereditato da Stream) |
| CanWrite |
Ottiene un valore che indica se il flusso corrente supporta operazioni di scrittura. (Ereditato da PipeStream) |
| ClientSafePipeHandle |
Ottiene l'handle sicuro per l'oggetto AnonymousPipeClientStream attualmente connesso all'oggetto AnonymousPipeServerStream . |
| InBufferSize |
Ottiene le dimensioni, in byte, del buffer in ingresso per una pipe. (Ereditato da PipeStream) |
| IsAsync |
Ottiene un valore che indica se un PipeStream oggetto è stato aperto in modo asincrono o sincrono. (Ereditato da PipeStream) |
| IsConnected |
Ottiene o imposta un valore che indica se un PipeStream oggetto è connesso. (Ereditato da PipeStream) |
| IsHandleExposed |
Ottiene un valore che indica se un handle per un PipeStream oggetto è esposto. (Ereditato da PipeStream) |
| IsMessageComplete |
Ottiene un valore che indica se sono presenti più dati nel messaggio restituito dall'operazione di lettura più recente. (Ereditato da PipeStream) |
| Length |
Ottiene la lunghezza di un flusso, espressa in byte. (Ereditato da PipeStream) |
| OutBufferSize |
Ottiene le dimensioni, in byte, del buffer in uscita per una pipe. (Ereditato da PipeStream) |
| Position |
Ottiene o imposta la posizione corrente del flusso corrente. (Ereditato da PipeStream) |
| ReadMode |
Imposta la modalità di lettura per l'oggetto AnonymousPipeServerStream . Per le pipe anonime, la modalità di trasmissione deve essere Byte. |
| ReadTimeout |
Ottiene o imposta un valore, espresso in millisecondi, che determina per quanto tempo il flusso tenterà di leggere prima del timeout. (Ereditato da Stream) |
| SafePipeHandle |
Ottiene l'handle sicuro per l'estremità locale della pipe incapsulato dall'oggetto corrente PipeStream . (Ereditato da PipeStream) |
| TransmissionMode |
Ottiene la modalità di trasmissione della pipe supportata dalla pipe corrente. |
| WriteTimeout |
Ottiene o imposta un valore, espresso in millisecondi, che determina per quanto tempo il flusso tenterà di scrivere prima del timeout. (Ereditato da Stream) |
Metodi
| Nome | Descrizione |
|---|---|
| BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Avvia un'operazione di lettura asincrona. (Ereditato da PipeStream) |
| BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Avvia un'operazione di scrittura asincrona. (Ereditato da PipeStream) |
| CheckPipePropertyOperations() |
Verifica che la pipe sia in uno stato appropriato per ottenere o impostare le proprietà. (Ereditato da PipeStream) |
| CheckReadOperations() |
Verifica che la pipe sia in uno stato connesso per le operazioni di lettura. (Ereditato da PipeStream) |
| CheckWriteOperations() |
Verifica che la pipe si trova in uno stato connesso per le operazioni di scrittura. (Ereditato da PipeStream) |
| Close() |
Chiude il flusso corrente e rilascia tutte le risorse (ad esempio socket e handle di file) associate al flusso corrente. Invece di chiamare questo metodo, assicurarsi che il flusso sia eliminato correttamente. (Ereditato da Stream) |
| CopyTo(Stream, Int32) |
Legge i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione del buffer specificata. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati. (Ereditato da Stream) |
| CopyTo(Stream) |
Legge i byte dal flusso corrente e li scrive in un altro flusso. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati. (Ereditato da Stream) |
| CopyToAsync(Stream, CancellationToken) |
Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando un token di annullamento specificato. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati. (Ereditato da Stream) |
| CopyToAsync(Stream, Int32, CancellationToken) |
Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione del buffer e un token di annullamento specificati. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati. (Ereditato da Stream) |
| CopyToAsync(Stream, Int32) |
Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione del buffer specificata. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati. (Ereditato da Stream) |
| CopyToAsync(Stream) |
Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso. Entrambe le posizioni dei flussi sono avanzate in base al numero di byte copiati. (Ereditato da Stream) |
| CreateObjRef(Type) |
Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto. (Ereditato da MarshalByRefObject) |
| CreateWaitHandle() |
Obsoleti.
Obsoleti.
Obsoleti.
Alloca un WaitHandle oggetto . (Ereditato da Stream) |
| Dispose() |
Rilascia tutte le risorse usate da Stream. (Ereditato da Stream) |
| Dispose(Boolean) |
Rilascia le risorse non gestite usate dalla PipeStream classe e, facoltativamente, rilascia le risorse gestite. (Ereditato da PipeStream) |
| DisposeAsync() |
Rilascia in modo asincrono le risorse non gestite usate da Stream. (Ereditato da Stream) |
| DisposeLocalCopyOfClientHandle() |
Chiude la copia locale dell'handle AnonymousPipeClientStream dell'oggetto. |
| EndRead(IAsyncResult) |
Termina una richiesta di lettura asincrona in sospeso. (Ereditato da PipeStream) |
| EndWrite(IAsyncResult) |
Termina una richiesta di scrittura asincrona in sospeso. (Ereditato da PipeStream) |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| Finalize() |
Rilascia risorse non gestite ed esegue altre operazioni di pulizia prima che l'istanza AnonymousPipeServerStream venga recuperata da Garbage Collection. |
| Flush() |
Cancella il buffer per il flusso corrente e determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante. (Ereditato da PipeStream) |
| FlushAsync() |
Cancella in modo asincrono tutti i buffer per questo flusso e determina la scrittura di tutti i dati memorizzati nel buffer nel dispositivo sottostante. (Ereditato da Stream) |
| FlushAsync(CancellationToken) |
Cancella in modo asincrono il buffer per il flusso corrente e determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante. (Ereditato da PipeStream) |
| GetAccessControl() |
Ottiene un PipeSecurity oggetto che incapsula le voci dell'elenco di controllo di accesso (ACL) per la pipe descritta dall'oggetto corrente PipeStream . (Ereditato da PipeStream) |
| GetClientHandleAsString() |
Ottiene l'handle dell'oggetto connesso AnonymousPipeClientStream come stringa. |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetLifetimeService() |
Obsoleti.
Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Inizializza un PipeStream oggetto dall'oggetto specificato SafePipeHandle . (Ereditato da PipeStream) |
| InitializeLifetimeService() |
Obsoleti.
Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficiale dell'oggetto corrente MarshalByRefObject . (Ereditato da MarshalByRefObject) |
| ObjectInvariant() |
Obsoleti.
Fornisce il supporto per un oggetto Contract. (Ereditato da Stream) |
| Read(Byte[], Int32, Int32) |
Legge un blocco di byte da un flusso e scrive i dati in un buffer specificato a partire da una posizione specificata per una lunghezza specificata. (Ereditato da PipeStream) |
| Read(Span<Byte>) |
Legge una sequenza di byte dal flusso corrente, le scrive in una matrice di byte e sposta in avanti la posizione all'interno del flusso in base al numero di byte letti. (Ereditato da PipeStream) |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Legge in modo asincrono una sequenza di byte dal flusso corrente a una matrice di byte a partire da una posizione specificata per un numero specificato di byte, sposta la posizione all'interno del flusso in base al numero di byte letti e monitora le richieste di annullamento. (Ereditato da PipeStream) |
| ReadAsync(Byte[], Int32, Int32) |
Legge in modo asincrono una sequenza di byte dal flusso corrente e sposta in avanti la posizione all'interno del flusso in base al numero di byte letti. (Ereditato da Stream) |
| ReadAsync(Memory<Byte>, CancellationToken) |
Legge in modo asincrono una sequenza di byte dal flusso corrente, li scrive in un intervallo di memoria di byte, sposta in avanti la posizione all'interno del flusso in base al numero di byte letti e monitora le richieste di annullamento. (Ereditato da PipeStream) |
| ReadAtLeast(Span<Byte>, Int32, Boolean) |
Legge almeno un numero minimo di byte dal flusso corrente e sposta in avanti la posizione all'interno del flusso in base al numero di byte letti. (Ereditato da Stream) |
| ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Legge in modo asincrono almeno un numero minimo di byte dal flusso corrente, sposta in avanti la posizione all'interno del flusso in base al numero di byte letti e monitora le richieste di annullamento. (Ereditato da Stream) |
| ReadByte() |
Legge un byte da una pipe. (Ereditato da PipeStream) |
| ReadExactly(Byte[], Int32, Int32) |
|
| ReadExactly(Span<Byte>) |
Legge i byte dal flusso corrente e sposta in avanti la posizione all'interno del flusso fino a quando l'oggetto |
| ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Legge |
| ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Legge in modo asincrono i byte dal flusso corrente, sposta la posizione all'interno del flusso fino a quando non |
| Seek(Int64, SeekOrigin) |
Imposta la posizione corrente del flusso corrente sul valore specificato. (Ereditato da PipeStream) |
| SetAccessControl(PipeSecurity) |
Applica le voci dell'elenco di controllo di accesso (ACL) specificate da un PipeSecurity oggetto alla pipe specificata dall'oggetto corrente PipeStream . (Ereditato da PipeStream) |
| SetLength(Int64) |
Imposta la lunghezza del flusso corrente sul valore specificato. (Ereditato da PipeStream) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| WaitForPipeDrain() |
Attende che l'altra estremità della pipe legga tutti i byte inviati. (Ereditato da PipeStream) |
| Write(Byte[], Int32, Int32) |
Scrive un blocco di byte nel flusso corrente usando dati da un buffer. (Ereditato da PipeStream) |
| Write(ReadOnlySpan<Byte>) |
Scrive una sequenza di byte nel flusso corrente e sposta in avanti la posizione corrente all'interno del flusso in base al numero di byte scritti. (Ereditato da PipeStream) |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Scrive in modo asincrono un numero specificato di byte da una matrice di byte a partire da una posizione specificata, sposta in avanti la posizione corrente all'interno del flusso in base al numero di byte scritti e monitora le richieste di annullamento. (Ereditato da PipeStream) |
| WriteAsync(Byte[], Int32, Int32) |
Scrive in modo asincrono una sequenza di byte nel flusso corrente e sposta in avanti la posizione corrente all'interno del flusso in base al numero di byte scritti. (Ereditato da Stream) |
| WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Scrive in modo asincrono una sequenza di byte nel flusso corrente, sposta in avanti la posizione corrente all'interno del flusso in base al numero di byte scritti e monitora le richieste di annullamento. (Ereditato da PipeStream) |
| WriteByte(Byte) |
Scrive un byte nel flusso corrente. (Ereditato da PipeStream) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
Configura il modo in cui verranno eseguite le attese nelle attività restituite da un oggetto eliminabile asincrono. |
| CopyToAsync(Stream, PipeWriter, CancellationToken) |
Legge in modo asincrono i byte da Stream e li scrive nell'oggetto specificato PipeWriterusando un token di annullamento. |
| GetAccessControl(PipeStream) |
Restituisce le informazioni di sicurezza di un flusso di pipe. |
| SetAccessControl(PipeStream, PipeSecurity) |
Modifica gli attributi di sicurezza di un flusso di pipe esistente. |