語言

FileStream.EndWrite(IAsyncResult) 方法

定義

結束非同步寫入操作並阻塞直到 I/O 操作完成。 (考慮改用 WriteAsync(Byte[], Int32, Int32, CancellationToken) 。)

public:
 override void EndWrite(IAsyncResult ^ asyncResult);
public override void EndWrite(IAsyncResult asyncResult);
override this.EndWrite : IAsyncResult -> unit
Public Overrides Sub EndWrite (asyncResult As IAsyncResult)

參數

asyncResult
IAsyncResult

待處理的非同步 I/O 請求。

例外狀況

asyncResult 是 null。

這個 IAsyncResult 物件並非透過呼叫 BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 這個類別所建立。

串流已關閉或發生內部錯誤。

範例

此程式碼範例是建構子更大範例 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 的一部分。

static void EndWriteCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    FileStream fStream = tempState.FStream;
    fStream.EndWrite(asyncResult);

    // Asynchronously read back the written data.
    fStream.Position = 0;
    asyncResult = fStream.BeginRead(
        tempState.ReadArray, 0 , tempState.ReadArray.Length,
        new AsyncCallback(EndReadCallback), tempState);

    // Concurrently do other work, such as
    // logging the write operation.
}
let endWriteCallback (asyncResult: IAsyncResult) =
    let tempState = asyncResult.AsyncState :?> State
    let fStream = tempState.FStream
    fStream.EndWrite asyncResult

    // Asynchronously read back the written data.
    fStream.Position <- 0

    let asyncResult =
        fStream.BeginRead(tempState.ReadArray, 0, tempState.ReadArray.Length, AsyncCallback endReadCallback, tempState)

    // Concurrently do other work, such as
    // logging the write operation.
    ()
Private Shared Sub EndWriteCallback(asyncResult As IAsyncResult)
    Dim tempState As State = _
        DirectCast(asyncResult.AsyncState, State)
    Dim fStream As FileStream = tempState.FStream
    fStream.EndWrite(asyncResult)

    ' Asynchronously read back the written data.
    fStream.Position = 0
    asyncResult = fStream.BeginRead( _ 
        tempState.ReadArray, 0 , tempState.ReadArray.Length, _
        AddressOf EndReadCallback, tempState)

    ' Concurrently do other work, such as 
    ' logging the write operation.
End Sub

備註

在 .NET Framework 4 及更早版本中,你必須使用像 BeginWrite 和 EndWrite 這樣的方法來實作非同步檔案操作。 這些方法仍可在 .NET Framework 4.5 中提供,以支援舊有程式碼;然而,新的非同步方法如 ReadAsync、WriteAsync、CopyToAsync 及 FlushAsync,能幫助你更輕鬆地實作非同步檔案操作。

這個方法會覆寫 EndWrite。

EndWrite必須在每個 IAsyncResult 上精確呼叫一次。BeginWrite EndWrite 會在 I/O 操作完成前阻塞。

適用於

另請參閱