2
我打开要异步写入的FileStream。处理FileStream不会结束异步读取
m_oFile.BeginRead(arrInputReport, 0, m_nInputReportLength, new AsyncCallback(ReadCompleted), arrInputReport);
我处理这个使用下面的代码:
if (bDisposing)
{
if (m_oFile != null)
{
m_oFile.Dispose();
m_oFile = null;
}
不幸的是,调用Dispose方法后,ReadComplete方法仍然会收到结果:
protected void ReadCompleted(IAsyncResult iResult)
{
byte[] arrBuff = (byte[])iResult.AsyncState; // retrieve the read buffer
try
{
m_oFile.EndRead(iResult);
它会得到一个nullReference错误m_oFile.EndRead行。检查null可以消除这个异常,但只是在该方法中捕获程序。我该如何处置ReadComplete方法?
在调用EndRead()之前,请勿访问*任何东西*。这将抛出ObjectDisposedException让你的代码知道读取没有正常完成。 – 2012-02-15 14:54:51
感谢汉斯。就是这样。 – drinck 2012-02-16 21:26:57