Stream.BeginWrite メソッド
非同期の書き込み操作を開始します。
Public Overridable Function BeginWrite( _
ByVal buffer() As Byte, _ ByVal offset As Integer, _ ByVal count As Integer, _ ByVal callback As AsyncCallback, _ ByVal state As Object _) As IAsyncResult
[C#]
public virtual IAsyncResult BeginWrite(byte[] buffer,intoffset,intcount,AsyncCallbackcallback,objectstate);
[C++]
public: virtual IAsyncResult* BeginWrite(unsigned charbuffer __gc[],intoffset,intcount,AsyncCallback* callback,Object* state);
[JScript]
public function BeginWrite(
buffer : Byte[],offset : int,count : int,callback : AsyncCallback,state : Object) : IAsyncResult;
パラメータ
- buffer
データを書き込む元となるバッファ。 - offset
書き込むデータの開始位置を示す buffer 内のバイト オフセット。 - count
書き込む最大バイト数。 - callback
書き込みの完了時に呼び出されるオプションの非同期コールバック。 - state
この特定の非同期書き込み要求を他の要求と区別するために使用するユーザー指定のオブジェクト。
戻り値
非同期の書き込みを表す IAsyncResult 。まだ保留状態の場合もあります。
例外
例外の種類 | 条件 |
---|---|
IOException | ファイルの末尾を越えて非同期の書き込みを実行しようとしました。または、ディスク エラーが発生しました。 |
ArgumentException | 1 つ以上の引数が無効です。 |
ObjectDisposedException | ストリームが閉じられた後でメソッドが呼び出されました。 |
NotSupportedException | 現在の Stream 実装は、書き込み操作をサポートしていません。 |
解説
ファイルの作成およびテキストのファイルへの書き込みの例については、「 ファイルへのテキストの書き込み 」を参照してください。ファイルからのテキストの読み取りの例については、「 ファイルからのテキストの読み取り 」を参照してください。バイナリ ファイルの読み取りおよび書き込みの例については、「 新しく作成したデータ ファイルの読み取りと書き込み 」を参照してください。非同期ファイル I/O の例については、「 非同期ファイル I/O 」を参照してください。
ストリームに対する BeginWrite の既定の実装は、 Write メソッドを同期的に呼び出します。このため、 Write が一部のストリームをブロックする場合があります。一方、 FileStream や NetworkStream などのクラスのインスタンスは、インスタンスが非同期的に開かれていれば、非同期操作を完全にサポートします。このため、 BeginWrite を呼び出しても、これらのストリームはブロックされません。 BeginWrite をオーバーライドすると (たとえば、非同期デリゲートを使用するなどして)、非同期動作を提供できます。
書き込みを完了し、リソースを適切に解放するには、現在のメソッドから返された IAsyncResult を EndWrite に渡す必要があります。この操作は、 BeginWrite を呼び出したものと同じコードを使用するか、 BeginWrite に渡されたコールバックで実行できます。非同期書き込み中にエラーが発生した場合、このメソッドから返される IAsyncResult を使用して EndWrite を呼び出すまで、例外はスローされません。
ストリームへの書き込みが可能なときにストリームの末尾で書き込みを行うと、ストリームが拡張されます。
ストリームの現在位置は、非同期の読み込みまたは書き込みが発行されたときに更新されます。I/O 操作の実行時ではありません。複数の非同期要求を同時に実行した場合、要求の完了順序は不定です。
現在のインスタンスが書き込みをサポートしているかどうかを判断するには、 CanWrite プロパティを使用します。
ストリームが閉じている場合、または無効な引数を渡した場合は、 BeginWrite からすぐに例外がスローされます。I/O 要求中のディスク障害など、非同期書き込みの要求中に発生するエラーは、スレッドプールのスレッドで発生し、 EndWrite を呼び出すときに例外をスローします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
Stream クラス | Stream メンバ | System.IO 名前空間 | EndWrite | CanWrite | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み | 非同期ファイル I/O