姜团长 2017-11-30 06:24 采纳率: 0%
浏览 3222
已结题

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

在用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条回答 默认 最新

  • 「已注销」 2017-11-30 06:28
    关注
    估计是没有绑在一起同步造成的
    
    评论

报告相同问题?