FileStream.IsAsync プロパティ

定義

FileStream が非同期的に開かれたか、同期的に開かれたかを示す値を取得します。Gets a value that indicates whether the FileStream was opened asynchronously or synchronously.

public:
 virtual property bool IsAsync { bool get(); };
public virtual bool IsAsync { get; }
member this.IsAsync : bool
Public Overridable ReadOnly Property IsAsync As Boolean

プロパティ値

true が非同期的に開かれた場合は FileStream。それ以外の場合は falsetrue if the FileStream was opened asynchronously; otherwise, false.

このコード例は、FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) コンストラクター用に用意されている、より大きな例の一部です。This code example is part of a larger example provided for the FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) constructor.

int main()
{
   
   // Create a synchronization object that gets 
   // signaled when verification is complete.
   ManualResetEvent^ manualEvent = gcnew ManualResetEvent( false );
   
   // Create the data to write to the file.
   array<Byte>^writeArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( writeArray );
   FileStream^ fStream = gcnew FileStream(  "Test#@@#.dat",FileMode::Create,FileAccess::ReadWrite,FileShare::None,4096,true );
   
   // Check that the FileStream was opened asynchronously.
   Console::WriteLine( "fStream was {0}opened asynchronously.", fStream->IsAsync ? (String^)"" : "not " );
   
   // Asynchronously write to the file.
   IAsyncResult^ asyncResult = fStream->BeginWrite( writeArray, 0, writeArray->Length, gcnew AsyncCallback( &FStream::EndWriteCallback ), gcnew State( fStream,writeArray,manualEvent ) );
   
   // Concurrently do other work and then wait 
   // for the data to be written and verified.
   manualEvent->WaitOne( 5000, false );
}

static void Main()
{
    // Create a synchronization object that gets 
    // signaled when verification is complete.
    ManualResetEvent manualEvent = new ManualResetEvent(false);

    // Create random data to write to the file.
    byte[] writeArray = new byte[100000];
    new Random().NextBytes(writeArray);

    FileStream fStream = 
        new FileStream("Test#@@#.dat", FileMode.Create, 
        FileAccess.ReadWrite, FileShare.None, 4096, true);

    // Check that the FileStream was opened asynchronously.
    Console.WriteLine("fStream was {0}opened asynchronously.",
        fStream.IsAsync ? "" : "not ");

    // Asynchronously write to the file.
    IAsyncResult asyncResult = fStream.BeginWrite(
        writeArray, 0, writeArray.Length, 
        new AsyncCallback(EndWriteCallback), 
        new State(fStream, writeArray, manualEvent));

    // Concurrently do other work and then wait 
    // for the data to be written and verified.
    manualEvent.WaitOne(5000, false);
}
Shared Sub Main()

    ' Create a synchronization object that gets 
    ' signaled when verification is complete.
    Dim manualEvent As New ManualResetEvent(False)

    ' Create random data to write to the file.
    Dim writeArray(100000) As Byte
    Dim randomGenerator As New Random()
    randomGenerator.NextBytes(writeArray)

    Dim fStream As New FileStream("Test#@@#.dat", _
        FileMode.Create, FileAccess.ReadWrite, _
        FileShare.None, 4096, True)

    ' Check that the FileStream was opened asynchronously.
    If fStream.IsAsync = True
        Console.WriteLine("fStream was opened asynchronously.")
    Else
        Console.WriteLine("fStream was not opened asynchronously.")
    End If

    ' Asynchronously write to the file.
    Dim asyncResult As IAsyncResult = fStream.BeginWrite( _
        writeArray, 0, writeArray.Length, _
        AddressOf EndWriteCallback , _
        New State(fStream, writeArray, manualEvent))

    ' Concurrently do other work and then wait
    ' for the data to be written and verified.
    manualEvent.WaitOne(5000, False)
End Sub

注釈

IsAsync プロパティは、FileStream ハンドルが非同期的に開かれたかどうかを検出し、コードで Handle プロパティを正しく使用できるようにします。The IsAsync property detects whether the FileStream handle was opened asynchronously, enabling your code to use the Handle property correctly. Win32 では、IsAsync が true の場合、ハンドルは重複 i/o 用に開かれているため、ReadFileWriteFileには異なるパラメーターが必要になります。In Win32, IsAsync being true means the handle was opened for overlapped I/O, and thus requires different parameters to ReadFile and WriteFile.

この値は、isAsyncuseAsync、または options パラメーターを持つコンストラクターを使用して FileStream クラスのインスタンスを作成するときに指定します。You specify this value when you create an instance of the FileStream class using a constructor that has an isAsync, useAsync, or options parameter. プロパティが true場合、ストリームは重複 i/o を利用してファイル操作を非同期に実行します。When the property is true, the stream utilizes overlapped I/O to perform file operations asynchronously. ただし、ReadAsyncWriteAsync、または CopyToAsync メソッドを呼び出すために、IsAsync プロパティを true する必要はありません。However, the IsAsync property does not have to be true to call the ReadAsync, WriteAsync, or CopyToAsync method. IsAsync プロパティが false、非同期の読み取りおよび書き込み操作を呼び出すと、UI スレッドはブロックされませんが、実際の i/o 操作は同期的に実行されます。When the IsAsync property is false and you call the asynchronous read and write operations, the UI thread is still not blocked, but the actual I/O operation is performed synchronously.

適用対象

こちらもご覧ください