英語で読む

次の方法で共有


FileStream.IsAsync プロパティ

定義

FileStream が非同期的に開かれたか、同期的に開かれたかを示す値を取得します。

public virtual bool IsAsync { get; }

プロパティ値

FileStream が非同期的に開かれた場合は true。それ以外の場合は false

このコード例は、コンストラクターに対して提供されるより大きな例の FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 一部です。

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);
}

注釈

プロパティは IsAsync 、ハンドルが FileStream 非同期的に開かれたかどうかを検出し、コードで Handle プロパティを正しく使用できるようにします。 Win32 で true を指定すると、IsAsync重複する I/O に対してハンドルが開かれたため、 と WriteFileに対して異なるパラメーターがReadFile必要になります。

、、または options パラメーターを持つコンストラクターを使用して クラスのFileStreamインスタンスを作成するときに、この値をisAsyncuseAsync指定します。 プロパティが の場合、ストリームは true重複した I/O を使用してファイル操作を非同期的に実行します。 ただし、 プロパティはIsAsync、または CopyToAsync メソッドをWriteAsyncReadAsync呼び出す必要trueはありません。 プロパティが IsAsyncfalse 、非同期の読み取りおよび書き込み操作を呼び出しても、UI スレッドはブロックされませんが、実際の I/O 操作は同期的に実行されます。

適用対象

こちらもご覧ください