AngOn823
姜团长
2017-11-30 06:24

C# 用FileStream.WriteAsync 异步读文件 调用线程还是被阻塞了。

20
  • c#

在用FileStream WriteAsync方法(BeginWrite方法也是一样)的异步写文件时、
如下代码。实际上调用这段代码的时候,还是被阻塞了。

 FileStream stream = new FileStream("in.txt", FileMode.OpenOrCreate,
                                    FileAccess.ReadWrite, FileShare.ReadWrite, 1024, FileOptions.Asynchronous);
            byte[] byteData = new byte[80961024 * 4];
            Task task = stream.WriteAsync(byteData, 0, byteData.Length);

如果把这个FileStream绑定到一个StreamWriter上,用StreamWriter的WriteAsync方法倒是能异步,不会阻塞。

FileStream stream = new FileStream("in.txt", FileMode.OpenOrCreate,
                                    FileAccess.ReadWrite, FileShare.ReadWrite, 1024, FileOptions.Asynchronous);
 char[] byteData = new char[80961024 * 4];

            var sw = new StreamWriter(stream);

            Task task = sw.WriteAsync(byteData, 0, byteData.Length);

求大神解惑

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

5条回答