private void GetTreeNodeCallback(IAsyncResult ar) { try { m_oGetMediaXml.SetStorageTreeNode(m_oGetMediaXml.m_oStorage.GetTreeNodeEnd(ar)); m_oGetMediaXml.m_ogetMD5HexStringDelegate = new Utils.getMD5HexStringDelegate(Utils.getMD5HexString); m_oGetMediaXml.m_oMemoryStream = new MemoryStream(); StorageTreeNode oFirstItem = m_oGetMediaXml.getNextTreeNode(); if (null != oFirstItem) { m_oGetMediaXml.m_oStorage.ReadFileBegin(Path.Combine(Path.GetDirectoryName(m_oGetMediaXml.m_sPath), oFirstItem.m_sName), m_oGetMediaXml.m_oMemoryStream, ReadNextMediaXmlCallback, null); } else { m_oGetMediaXml.FireCallback(); } } catch { m_oGetMediaXml.DisposeAndCallback(); } }