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();
     }
 }