博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#异步将文本内容写入文件
阅读量:6594 次
发布时间:2019-06-24

本文共 1726 字,大约阅读时间需要 5 分钟。

在C#/.NET中,将文本内容写入文件最简单的方法是调用 File.WriteAllText() 方法,但这个方法没有异步的实现,要想用异步,只能改用有些复杂的 FileStream.WriteAsync() 方法。

使用 FileStream.WriteAsync() 有2个需要注意的地方,1是要设置bufferSize,2是要将useAsync这个构造函数参数设置为true,示例调用代码如下:

public async Task CommitAsync(){    var bits = Encoding.UTF8.GetBytes("{\"text\": \"test\"}");    using (var fs = new FileStream(        path: @"C:\temp\test.json",         mode: FileMode.Create,         access: FileAccess.Write,         share: FileShare.None,         bufferSize: 4096,         useAsync: true))    {        await fs.WriteAsync(bits, 0, bits.Length);    }}

看这个方法的帮助文档中对useAsync参数的说明:

//   useAsync:        //     Specifies whether to use asynchronous I/O or synchronous I/O. However, note        //     that the underlying operating system might not support asynchronous I/O,        //     so when specifying true, the handle might be opened synchronously depending        //     on the platform. When opened asynchronously, the System.IO.FileStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)        //     and System.IO.FileStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)        //     methods perform better on large reads or writes, but they might be much slower        //     for small reads or writes. If the application is designed to take advantage        //     of asynchronous I/O, set the useAsync parameter to true. Using asynchronous        //     I/O correctly can speed up applications by as much as a factor of 10, but        //     using it without redesigning the application for asynchronous I/O can decrease        //     performance by as much as a factor of 10.

从中可以得知,只有设置useAsync为true,才真正使用上了异步IO。

转载地址:http://sldio.baihongyu.com/

你可能感兴趣的文章
基于JAVA的银行卡实名认证接口调用代码实例
查看>>
Centos下安装并设置nginx开机自启动
查看>>
bzoj3195: [Jxoi2012]奇怪的道路
查看>>
C# 使用 CancellationTokenSource 终止线程
查看>>
idea创建springboot工程
查看>>
Web中间件漏洞
查看>>
简单轮播图
查看>>
微信公众号页面无法唤起输入框
查看>>
day 32并行 并发
查看>>
Mac上安装stf
查看>>
介绍几个移动web app开发框架
查看>>
十六进制转十进制(蓝桥杯)
查看>>
搭建Easyui环境在Myeclipse或Eclipse中
查看>>
bin log、redo log、undo log和MVVC
查看>>
ubuntu 重启网络方法--通过杀死进程重启网络
查看>>
深度优先搜索(DFS)(Java)
查看>>
Java --Serializable序列化
查看>>
He angrily answer MBT Tunisha
查看>>
洛谷P2774 方格取数问题(最小割)
查看>>
This function has none of DETERMINISTIC, NO SQL解决办法
查看>>