語言

AnonymousPipeClientStream 類別

定義

它暴露了匿名管道串流的用戶端,支援同步與非同步的讀寫操作(在 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
繼承
AnonymousPipeClientStream
繼承
AnonymousPipeClientStream

範例

以下範例是透過匿名管道將字串從父程序傳送到子程序。 此範例在父程序中建立 AnonymousPipeServerStream 一個物件,其 PipeDirection 值為 Out。它也會在子程序中建立 AnonymousPipeClientStream 一個物件,其 PipeDirection 值為 In。 父程序接著將使用者提供的字串傳送給子程序。 這串字串會顯示在主控台上。

此範例為客戶端程序,由伺服器程序啟動。 執行這個範例時,從客戶端程式碼 pipeClient.exe 中命名產生的可執行檔,並將其複製到與伺服器執行檔相同的目錄。 完整程式碼範例,包括管線用戶端與伺服器端的程式碼,請參見 《如何:使用匿名管線進行本地程序間通訊》。

//<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>

備註

匿名管道有助於提供子程序與父程序間安全且可靠的程序間通訊。 該 AnonymousPipeClientStream 類別使子程序能夠連接並與父程序交換資訊。

匿名管道是無名稱的單向管道,通常在父程序與子程序間傳輸資料。 匿名管道總是本地的;它們無法透過網路使用。 PipeDirection不支援 的InOut值,因為匿名管道被定義為單向。

匿名管道不支援 PipeTransmissionMode.Message 讀取模式。

匿名管道的用戶端必須由伺服器端透過呼叫 GetClientHandleAsString 該方法所提供的管道處理碼建立。 該字串接著會作為參數傳遞給建立客戶端程序。 從客戶端程序中,將參數傳給 AnonymousPipeClientStream 建構子 pipeHandleAsString 。

在 Windows 上,非同步(重疊)讀寫操作不被匿名管道支援(參見 Anonymous 管道操作)。 AnonymousPipeClientStream 類別仍會在Windows平台上排程執行緒池的工作,因此非同步Stream 操作可執行,但不支援取消這些操作。

建構函式

名稱 Description
AnonymousPipeClientStream(PipeDirection, SafePipeHandle)

從指定的句柄初始化該類別的新實例 AnonymousPipeClientStream 。

AnonymousPipeClientStream(PipeDirection, String)

初始化一個以指定管線方向及管柄字串表示的新類別實例 AnonymousPipeClientStream 。

AnonymousPipeClientStream(String)

初始化一個新的類別實例 AnonymousPipeClientStream ,使用指定的管線 handle 字串表示。

屬性

名稱 Description
CanRead

會取得一個值,表示目前串流是否支援讀取操作。

(繼承來源 PipeStream)
CanSeek

會獲得一個值,表示目前串流是否支援尋道操作。

(繼承來源 PipeStream)
CanTimeout

取得值,這個值會判斷目前的數據流是否可以逾時。

(繼承來源 Stream)
CanWrite

會獲得一個值,表示目前串流是否支援寫入操作。

(繼承來源 PipeStream)
InBufferSize

取得管線入站緩衝區的大小(以位元組為單位)。

(繼承來源 PipeStream)
IsAsync

會取得一個值,表示物件是 PipeStream 非同步或同步開啟。

(繼承來源 PipeStream)
IsConnected

取得或設定一個值,表示物件是否 PipeStream 連通。

(繼承來源 PipeStream)
IsHandleExposed

會取得一個值,表示物件的 handle PipeStream 是否被暴露。

(繼承來源 PipeStream)
IsMessageComplete

會取得一個值,表示最近一次讀取操作回傳的訊息中是否有更多資料。

(繼承來源 PipeStream)
Length

取得串流長度,以位元組為單位。

(繼承來源 PipeStream)
OutBufferSize

取得管線出站緩衝區的大小(以位元組為單位)。

(繼承來源 PipeStream)
Position

取得或設定當前串流的當前位置。

(繼承來源 PipeStream)
ReadMode

設定物件的 AnonymousPipeClientStream 讀取模式。

ReadTimeout

會取得或設定一個以毫秒為單位的值,決定串流在逾時前嘗試讀取的時間長短。

(繼承來源 Stream)
SafePipeHandle

會拿到管子本地端的安全把手,該管子是當前 PipeStream 物體所包覆的。

(繼承來源 PipeStream)
TransmissionMode

取得由現有管線支援的管道傳輸模式。

WriteTimeout

取得或設定一個毫秒級的值,決定串流在逾時前嘗試寫入的時間長短。

(繼承來源 Stream)

方法

名稱 Description
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

開始異步讀取作業。

(繼承來源 PipeStream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

開始異步寫入作業。

(繼承來源 PipeStream)
CheckPipePropertyOperations()

驗證管線是否處於正確狀態,可用於取得或設定屬性。

(繼承來源 PipeStream)
CheckReadOperations()

驗證管線在讀取操作時處於連通狀態。

(繼承來源 PipeStream)
CheckWriteOperations()

驗證管線在寫入操作時是否處於連接狀態。

(繼承來源 PipeStream)
Close()

關閉目前串流並釋放與目前串流相關的資源(如套接字和檔案柄)。 與其呼叫此方法,不如確保溪流已被妥善處理。

(繼承來源 Stream)
CopyTo(Stream, Int32)

從目前串流讀取位元組,並依指定緩衝區大小寫入另一串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyTo(Stream)

從目前串流讀取位元組,然後寫入另一條串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream, CancellationToken)

使用指定的取消標記,以異步方式從目前數據流讀取位元組,並將其寫入另一個數據流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream, Int32, CancellationToken)

非同步地從目前串流讀取位元組,並使用指定的緩衝區大小與取消標記寫入另一串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream, Int32)

非同步讀取目前串流的位元組,並以指定的緩衝區大小寫入另一串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CopyToAsync(Stream)

非同步地從目前串流讀取位元組,然後寫入另一條串流。 兩個串流的位置依複製的位元組數前進。

(繼承來源 Stream)
CreateObjRef(Type)

建立一個物件,包含產生代理伺服器所需的所有相關資訊,用於與遠端物件通訊。

(繼承來源 MarshalByRefObject)
CreateWaitHandle()
已淘汰.
已淘汰.
已淘汰.

分配一個 WaitHandle 物件。

(繼承來源 Stream)
Dispose()

釋放 Stream所使用的所有資源。

(繼承來源 Stream)
Dispose(Boolean)

釋放類別使用的 PipeStream 非管理資源,並可選擇性地釋放受管理資源。

(繼承來源 PipeStream)
DisposeAsync()

非同步釋放 Stream.

(繼承來源 Stream)
EndRead(IAsyncResult)

結束暫止的異步讀取要求。

(繼承來源 PipeStream)
EndWrite(IAsyncResult)

結束一個待處理的非同步寫入請求。

(繼承來源 PipeStream)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Finalize()

在實例被垃圾回收前,釋放未管理的資源並執行其他清理操作 AnonymousPipeClientStream 。

Flush()

清除當前串流的緩衝區,並使任何緩衝資料寫入底層裝置。

(繼承來源 PipeStream)
FlushAsync()

非同步清除此串流的所有緩衝區,並使任何緩衝資料寫入底層裝置。

(繼承來源 Stream)
FlushAsync(CancellationToken)

非同步清除當前串流的緩衝區,並使任何緩衝資料寫入底層裝置。

(繼承來源 PipeStream)
GetAccessControl()

取得 PipeSecurity 一個物件,封裝了目前物件所描述 PipeStream 管線的存取控制清單(ACL)條目。

(繼承來源 PipeStream)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個實例存留期原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetType()

取得目前實例的 Type。

(繼承來源 Object)
InitializeHandle(SafePipeHandle, Boolean, Boolean)

從指定的PipeStream物件初始化一個SafePipeHandle物件。

(繼承來源 PipeStream)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個實例的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 對象的淺層複本。

(繼承來源 MarshalByRefObject)
ObjectInvariant()
已淘汰.

提供 。Contract

(繼承來源 Stream)
Read(Byte[], Int32, Int32)

從串流讀取一個位元組區塊,並將資料寫入指定緩衝區,從指定位置開始,長度指定。

(繼承來源 PipeStream)
Read(Span<Byte>)

從目前串流讀取一串位元組,將它們寫入位元組陣列,並依讀取位元組數推進串流中的位置。

(繼承來源 PipeStream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

非同步地從目前串流讀取一串位元組到指定位置的位元組陣列,並以指定位元組數為基礎,並依讀取位元組數前進,並監控取消請求。

(繼承來源 PipeStream)
ReadAsync(Byte[], Int32, Int32)

非同步讀取當前串流的位元組序列,並依讀取位元組數推進串流中的位置。

(繼承來源 Stream)
ReadAsync(Memory<Byte>, CancellationToken)

非同步從目前串流讀取一串位元組,將其寫入位元組記憶體範圍,依讀取位元組數前進串流中的位置,並監控取消請求。

(繼承來源 PipeStream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

從目前數據流讀取至少一個字節數目,並將數據流中的位置依讀取的位元組數目往前移。

(繼承來源 Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

以異步方式從目前數據流讀取至少一個字節數目、依讀取的位元組數目將數據流中的位置往前移,並監視取消要求。

(繼承來源 Stream)
ReadByte()

讀取一個位元組。

(繼承來源 PipeStream)
ReadExactly(Byte[], Int32, Int32)

從目前串流讀取 count 位元組數,並推進串流中的位置。

(繼承來源 Stream)
ReadExactly(Span<Byte>)

從目前串流讀取位元組,並推進串流中的位置直到填 buffer 滿。

(繼承來源 Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

非同步讀取 count 當前串流的位元組數量,推進串流中的位置,並監控取消請求。

(繼承來源 Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

非同步讀取目前串流的位元組,推進串流中的位置直到填 buffer 滿,並監控取消請求。

(繼承來源 Stream)
Seek(Int64, SeekOrigin)

將當前串流的當前位置設定為指定的值。

(繼承來源 PipeStream)
SetAccessControl(PipeSecurity)

將物件指定的 PipeSecurity 存取控制清單(ACL)條目套用到目前 PipeStream 物件指定的管線上。

(繼承來源 PipeStream)
SetLength(Int64)

將目前串流的長度設定為指定的值。

(繼承來源 PipeStream)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)
WaitForPipeDrain()

等待管線另一端讀取所有已發送的位元組。

(繼承來源 PipeStream)
Write(Byte[], Int32, Int32)

利用緩衝區的資料寫入一個位元組區塊到目前的串流。

(繼承來源 PipeStream)
Write(ReadOnlySpan<Byte>)

將一串位元組寫入目前串流,並依照寫入的位元組數將目前位置往前推進。

(繼承來源 PipeStream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

非同步從指定位置的位元組陣列寫入指定數量的位元組,依照寫入位元組數將該串流中當前位置推進,並監控取消請求。

(繼承來源 PipeStream)
WriteAsync(Byte[], Int32, Int32)

非同步地將一串位元組寫入目前串流,並依照寫入的位元組數將該串流中的當前位置往前推進。

(繼承來源 Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

非同步地將一串位元組寫入目前串流,依照寫入位元組數將該串流中的當前位置前進,並監控取消請求。

(繼承來源 PipeStream)
WriteByte(Byte)

會寫入一個位元組到目前的串流。

(繼承來源 PipeStream)

擴充方法

名稱 Description
ConfigureAwait(IAsyncDisposable, Boolean)

設定如何執行從異步可處置專案傳回的工作等候。

CopyToAsync(Stream, PipeWriter, CancellationToken)

非同步讀取 的 Stream 位元組並使用消去標記寫入指定的 PipeWriter。

GetAccessControl(PipeStream)

回傳管線流的安全資訊。

SetAccessControl(PipeStream, PipeSecurity)

變更現有管線串流的安全屬性。

適用於