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