FileStream.EndWrite(IAsyncResult) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
結束非同步寫入作業並封鎖,直到 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 = dynamic_cast<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, gcnew AsyncCallback( &FStream::EndReadCallback ), tempState );
// Concurrently do other work, such as
// logging the write operation.
}
};
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.
}
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 作業完成為止。