当我的文件很大时,我的writer在我关闭文件之前是空的
本文关键字:我的 文件 writer | 更新日期: 2023-09-27 17:53:25
我有一个引擎类,负责与我的Player
类播放流字节,并将字节写入我的StreamWriter
类文件。
我可以拥有多个引擎和多个玩家/作者。
一切都很好,直到我需要关闭文件。当我说关闭时,我的意思是添加波头并做一些操作,然后我处理写入器并打开一个新的写入器来写入字节。
我的问题是,当文件很小,它的ok,但当文件较大(几Mb),然后笔者是空的,我关闭文件之前。我怎样才能避免这种情况呢?
一些代码:Engine
类
AddBytesAndSave(byte,[] stream)
{
writer.AddAndSave(stream);
// here i think i must wait untill the operation complete
writer.Dispose;
writer = null;
}
Writer
class
AddAndSave(byte[] stream)
{
writrToFileWorker.RunWorkerAsync(stream);
}
已触发异步调用。RunWorkerAsync方法提交一个请求来启动异步运行的操作。因此,您的写入器在完成之前被dispose/null。
可以这样做,
private void writrToFileWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// code to add (after the asynchronous call is completed)
writer.Dispose;
writer = null;
}
显然,还是?当数组较大时,物理写入需要更多的时间,并且由于您不需要等待-嗯…
技术上的问题是,从你的代码中运行写异步操作是没有意义的。完全没有。不需要真正的建议——任何重构都取决于我们从代码片段中不知道的情况。如果写入是异步的,那么显然不应该在AddBytesAndSave方法中关闭写入器