gpt4 book ai didi

C# 读写 TextFile 在中间结束

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:08 28 4
gpt4 key购买 nike

我运行一个方法,有三个部分,第 1 部分和第 3 部分都是“读取文本文件”,

第二部分是将字符串保存到文本文件,

// The Save Path is the text file's Path, used to read and save
// Encode can use Encoding.Default
public static async void SaveTextFile(string StrToSave, string SavePath, Encoding ENCODE)
{
// Part1
try
{
using (StreamReader sr = new StreamReader(SavePath, ENCODE))
{
string result = "";
while (sr.EndOfStream != true)
result = result + sr.ReadLine() + "\n";

MessageBox.Show(result);
}
}
catch (Exception e)
{
Console.WriteLine(e);
}

// Part2
try
{
using (FileStream fs = new FileStream(SavePath, FileMode.Create))
{
using (StreamWriter sw = new StreamWriter(fs, ENCODE))
{
await sw.WriteAsync(StrToSave);
await sw.FlushAsync();
sw.Close();
}
MessageBox.Show("Save");
fs.Close();
}
}

// The Run End Here And didn't Continue to Part 3

catch (Exception e)
{
Console.WriteLine(e);
}

// Part3
try
{
using (StreamReader sr = new StreamReader(SavePath, ENCODE))
{
string result = "";
while (sr.EndOfStream != true)
result = result + sr.ReadLine() + "\n";

MessageBox.Show(result);
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
}

但是我觉得很奇怪,在part2完成的地方流程就结束了,到part3就直接结束了,没有继续,

出现这种情况的原因是什么?一般过程应该走完整个方法,但不应该中途停止

(还有一个问题)有没有其他方法既可以达到part2的目的,又可以继续part3来完成整个方法?

最佳答案

这可能是因为您正在编写一个 async void 方法,并且您正在调用第 2 部分中的一些异步方法。尝试将第 2 部分中的异步方法更改为非异步方法:

using (StreamWriter sw = new StreamWriter(fs, ENCODE))
{
sw.Write(StrToSave);
sw.Flush(); // Non-async
sw.Close(); // Non-async
}

它现在的行为是否符合您的预期?

关于C# 读写 TextFile 在中间结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667875/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com