WPF应用点击写入按钮无警告崩溃,Text文件读写功能异常如何修复?
问题根因
你当前代码崩溃的核心原因是文件流资源未主动释放导致的文件占用冲突:
StreamWriter实例化后会持有目标文件的独占锁,你既没有手动关闭写入流,也没有触发缓冲区内容刷入磁盘的操作- 紧接着直接实例化
StreamReader尝试读取被占用的文件,会直接抛出未捕获的IO异常,进而导致程序无警告崩溃 - 就算绕过占用问题,写入的内容还停留在内存缓冲区未刷入磁盘,读取到的内容也会是空值
修复方案
推荐使用 using 语句自动管理IDisposable类型资源,不需要手动编写关闭/释放逻辑,即使中间代码执行异常也能保证资源正常释放,代码修改如下:
private void Write_Click(object sender, RoutedEventArgs e) { // using块执行结束后会自动释放StreamWriter、关闭文件句柄 using (TextWriter writer = new StreamWriter(filelocation)) { writer.WriteLine("Welcome to my universe"); } // 此时文件锁已释放,可以正常读取内容 using (TextReader reader = new StreamReader(filelocation)) { Write.Content = reader.ReadToEnd(); } }
可选简化写法
如果你不需要对流做自定义控制,直接用.NET封装好的File静态方法代码会更简洁,内部已经自动处理了资源释放逻辑:
private void Write_Click(object sender, RoutedEventArgs e) { File.WriteAllText(filelocation, "Welcome to my universe" + Environment.NewLine); Write.Content = File.ReadAllText(filelocation); }
内容的提问来源于stack exchange,提问作者user16620861
相关产品推荐
相关产品推荐

