WriteAllTextAsync如果字符串大小超过 4kb,则AppendAllTextAsync方法无法写入字符串内容。我假设这是某种缓冲区限制,但这些方法不支持接受缓冲区大小作为参数的重载方法。我正在使用.net框架4.7.2
当使用类WriteAllText的 或AppendAllText方法时File,输出文件的长度为 254 kb,并写入整个文本,但使用Async这些方法的版本时,仅写入 4kb 的输出。
//Populate jsonString variable with a very large string
string jsonString = "placeholder for string content";
//Below code will output partial string till 4kb in length
File.AppendAllTextAsync("temp.json", jsonString);
//Below code outputs the entire content
File.AppendAllText("temp.json", jsonString);
Run Code Online (Sandbox Code Playgroud)
有人可以解释这种行为以及问题的解决方案吗
您以错误的方式使用异步调用。当您以这种方式调用时File.AppendAllTextAsync,将执行新任务。您必须使用关键字等待此方法的结果await。如果您不等待,则程序会在异步调用完成并写入不完整的文本之前结束。
所以正确的调用是:
await File.AppendAllTextAsync("temp.json", jsonString);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5856 次 |
| 最近记录: |