C#流对象使用完后不立即释放的问题

本文介绍了在Unity中正确进行文件写入的方法,对比了不同写法的效果,并强调了流对象使用完毕后立即释放的重要性,避免因此导致的卡死等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 public class testwriter : MonoBehaviour {
 2 
 3     // Use this for initialization
 4     void Start () {
 5         
 6     }
 7     
 8     [MenuItem("Testx/test")]
 9     static void test()
10     {
11         //不正确写法:
12         var writer = new StreamWriter(File.Create("Assets/test"));
13         writer.Write(123);
14         writer.Flush(); //刷新也没用,可以看到磁盘上文件老半天都是0KB
15 
16         //正确写法一
17         writer = new StreamWriter(File.Create("Assets/test"));
18         writer.Write(123);
19         writer.Dispose();//使用完后立即释放
20 
21         //正确写法二
22         using(var wrter = new StreamWriter(File.Create("Assets/test"))){
23             wrter.Write(123);
24             //wrter.Flush();//没必要刷新,出了范围后会立即将内容写到磁盘,可以看到磁盘文件立即是1K了
25             //wrter.Dispose();//这个也没必要
26         }//自动被释放
27 
28         //如果流对象在使用完后不立即释放可能会出现一些问题,在UNITY中出现了卡死现象:
29         //具体操作为:按照上面不正确代码,执行后,打开磁盘,先是看到0KB的test文件,很快变成1KB,这时再切回UNITY
30         //要么会卡死,要么提示:资源正在被另一进程使用,挂掉。
31 
32     }
33     // Update is called once per frame
34     void Update () {
35         
36     }
37 }

 

转载于:https://www.cnblogs.com/timeObjserver/p/7218595.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值