Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步开始写入结束写入统一(net 2.0)_C#_Asynchronous_Unity3d_Filestream - Fatal编程技术网

C# 异步开始写入结束写入统一(net 2.0)

C# 异步开始写入结束写入统一(net 2.0),c#,asynchronous,unity3d,filestream,C#,Asynchronous,Unity3d,Filestream,我正试图找出一种正确的方法,以异步方式将一些字节(在本例中是一个录制的.wav文件)写入硬盘 据我所知,我使用的是unity,仅限于使用Filestream.BeginWrite和EndWrite 到目前为止,我所得到的似乎是有效的,但我担心,由于我缺乏异步调用的经验,我没有在完成后正确关闭文件流,从而导致内存泄漏 我开始写这样的开头: object t = null; fileStream.BeginWrite(bytesData, 0, bytesData.Length, new Asy

我正试图找出一种正确的方法,以异步方式将一些字节(在本例中是一个录制的.wav文件)写入硬盘

据我所知,我使用的是unity,仅限于使用Filestream.BeginWrite和EndWrite

到目前为止,我所得到的似乎是有效的,但我担心,由于我缺乏异步调用的经验,我没有在完成后正确关闭文件流,从而导致内存泄漏

我开始写这样的开头:

object t = null;

fileStream.BeginWrite(bytesData, 0, bytesData.Length, new  AsyncCallback(EndWriteCallback),  t); 
然后我有一个EndWriteCallback,它有:

public static void EndWriteCallback(IAsyncResult e){
    FileStream fs = e.AsyncState as FileStream;
    fs.EndWrite(e);
}
这够了吗?同样,它似乎工作正常,但我觉得我必须在某个地方调用FileStream.Close()


提前感谢

正如上面评论中提到的@ChristophKn,
fs.dispose()
可能是释放资源的最佳方式。

您可以
fs.dipose()
filestream,或者您可以使用您需要将
fs
传递到
BeginWrite
而不是
t
,以使
e.AsyncState作为filestream
工作。