例: バイト列読み込み• 同期staticbyte[] ReadBytes(Stream s, int n){var buffer = new byte[n];s.Read(buffer, 0, n);return buffer;}ここでフリーズの可能性あり
11.
例: バイト列読み込み• begin/end、コールバック式staticvoid ReadBytes(Stream s, int n, Action<byte[]> callback){var buffer = new byte[n];s.BeginRead(buffer, 0, n, r =>{var result = s.EndRead(r);callback(buffer);}, null);}2個のメソッドをペアで呼ぶ必要あり後ろにさらに処理がつづいたり、分岐・ループさせるとかなり面倒
12.
例: バイト列読み込み• ContinueWith※、コールバック式staticTask<byte[]> ReadBytes(Stream s, int n){var buffer = new byte[n];return s.ReadAsync(buffer, 0, n).ContinueWith(t => buffer);}※ 他のプログラミング言語だと Then という名前が多いいわゆる継続処理(continuation)後ろにさらに処理がつづいたり、分岐・ループさせるとかなり面倒