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

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
    关注
    估计是没有绑在一起同步造成的
    
    评论

报告相同问题?

悬赏问题

  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?
  • ¥15 如何自动更换布娃娃图片上的衣服
  • ¥15 心理学eprime编程
  • ¥15 arduino esp8266开发
  • ¥15 stm32单片机通过485发送命令给驱动器控制电机转动,同样的代码f103可以控制电机转动,换到f407不能动了,但是用串口助手调试407显示发送的命令都是正确的,卡了好久了这是发送规则