FileStream.EndWrite(IAsyncResult) Метод

Определение

Завершает асинхронную операцию записи и блокирует до тех пор, пока не будет завершена операция ввода-вывода. (Рекомендуется использовать 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

Отложенный асинхронный запрос ввода-вывода.

Исключения

asyncResult имеет значение null.

Этот объект IAsyncResult не был создан путем вызова BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) для данного класса.

EndWrite(IAsyncResult) вызывается несколько раз.

Поток закрыт, или произошла внутренняя ошибка.

Примеры

Этот пример кода является частью более крупного примера, предоставленного для конструктора 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, и WriteAsyncCopyToAsync, FlushAsyncпомогают упростить реализацию асинхронных операций с файлами.

Этот метод переопределяет метод EndWrite.

EndWrite должен вызываться ровно один раз на каждом IAsyncResult из BeginWrite. EndWrite блокируется до завершения операции ввода-вывода.

Применяется к

См. также раздел