private static void InitExtractDirectoryFileThreadProc(TreeNode treeParentNode)
            {
                if (treeParentNode == null)
                {
                    return;
                }

                TreeNodeFileInfo l_TreeNodeFileInfo = ExtractAllThread.s_nodeHybridDictionary[treeParentNode] as TreeNodeFileInfo;

                if (l_TreeNodeFileInfo == null)
                {
                    return;
                }

                if (Directory.Exists("Demo ExtractFile") == false)
                {
                    Directory.CreateDirectory("Demo ExtractFile");
                    m_vfsExtractDirectoryFile.richTextBox.AppendText("目录" + "Demo ExtractFile" + "创建完成!\n");
                }

                string strPathName = l_TreeNodeFileInfo.m_strFullPath;

                string[] strPath = strPathName.Split("\\".ToCharArray());


                if (strPath.Length == 0)
                {
                    return;
                }

                string strKey = string.Empty;

                for (int iIndex3 = 0; iIndex3 < strPath.Length; iIndex3++)
                {
                    strKey = string.Concat(strKey, "\\", strPath[iIndex3]);

                    if (Directory.Exists("Demo ExtractFile" + strKey) == false)
                    {
                        Directory.CreateDirectory("Demo ExtractFile" + strKey);
                        m_vfsExtractDirectoryFile.richTextBox.AppendText("目录" + "Demo ExtractFile" + strKey + "创建完成!\n");
                    }
                }

                m_vfsExtractDirectoryFile.richTextBox.AppendText("开始解压目录" + l_TreeNodeFileInfo.m_strFullPath + "...\n");

                for (int iIndex = 0; iIndex < l_TreeNodeFileInfo.m_ListViewItemFileInfo.Count; iIndex++)
                {
                    if (s_isFormClose == true)
                    {
                        s_isThreadClose      = true;
                        s_isExtractAllThread = false;
                        m_vfsExtractDirectoryFile.richTextBox.AppendText("程序关闭中...当前的操作终止");
                        m_vfsExtractDirectoryFile.Close();
                        return;
                    }

                    m_vfsExtractDirectoryFile.progressBar1.PerformStep();

                    string l_strExtractFileFullPath = l_TreeNodeFileInfo.m_ListViewItemFileInfo[iIndex].m_strFullPath.Substring(1);
                    m_vfsExtractDirectoryFile.richTextBox.AppendText("文件" + l_strExtractFileFullPath + "开始解压中...\n");

                    s_TriggerVFS.ExtractFile(l_strExtractFileFullPath, "Demo ExtractFile\\" + l_strExtractFileFullPath);

                    m_vfsExtractDirectoryFile.richTextBox.AppendText("文件解压在 Demo ExtractFile\\" + l_strExtractFileFullPath + " 中, 完成!\n");
                }

                m_vfsExtractDirectoryFile.richTextBox.AppendText("目录" + l_TreeNodeFileInfo.m_strFullPath + "全部解压, 完成!\n");

                for (int iIndex = 0; iIndex < treeParentNode.Nodes.Count; iIndex++)
                {
                    InitExtractDirectoryFileThreadProc(treeParentNode.Nodes[iIndex]);
                }
            }
            private static void OpenIndexThreadProc()
            {
                s_isExtractAllThread = true;
                CloseMenu(m_vfsOpenIndexForm);

                m_vfsOpenIndexForm.richTextBox.AppendText("文件开始读取中...\n");

                s_TriggerVFS.OpenIndex("data.idx", false);

                TreeNode l_RootTree = new TreeNode("Root");

                for (int iIndex = 0; iIndex < s_TriggerVFS.FileTreeArray.Length; iIndex++)
                {
                    m_vfsOpenIndexForm.richTextBox.AppendText("VFS 文件" + s_TriggerVFS.VFSNames[iIndex] + " 存档数(" + s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount.ToString() + ")\n");

                    for (int iIndex2 = 0; iIndex2 < s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount; iIndex2++)
                    {
                        m_vfsOpenIndexForm.progressBar1.PerformStep();

                        string   strPathName = s_TriggerVFS.FileTreeArray[iIndex].m_strFiles[iIndex2];
                        string[] strPath     = strPathName.Split("\\".ToCharArray());

                        if (strPath.Length == 0)
                        {
                            continue;
                        }

                        TreeNode l_ParentTree = l_RootTree;

                        string           strKey = string.Empty;
                        TreeNodeFileInfo l_TreeNodeFileInfoDirectory = null;
                        for (int iIndex3 = 0; iIndex3 < strPath.Length; iIndex3++)
                        {
                            if (s_isFormClose == true)
                            {
                                s_isThreadClose      = true;
                                s_isExtractAllThread = false;
                                m_vfsOpenIndexForm.richTextBox.AppendText("程序关闭中...当前的操作终止");
                                m_vfsOpenIndexForm.Close();
                                return;
                            }

                            strKey = string.Concat(strKey, "\\", strPath[iIndex3]);

                            TreeNodeFileInfo l_TreeNodeFileInfo = s_strHybridDictionary[strKey] as TreeNodeFileInfo;

                            TreeNode l_TreeNode = null;
                            if (l_TreeNodeFileInfo == null)
                            {
                                l_TreeNodeFileInfo = new TreeNodeFileInfo();
                                l_TreeNodeFileInfo.m_ListViewItemFileInfo = new List <ListViewItemFileInfo>();
                                l_TreeNode = new TreeNode(strPath[iIndex3]);
                                l_TreeNodeFileInfo.m_TreeNode = l_TreeNode;

                                if (iIndex3 == (strPath.Length - 1))
                                {
                                    l_TreeNodeFileInfo.m_strFullPath    = strKey;
                                    l_TreeNodeFileInfo.m_strFileName    = strPath[strPath.Length - 1];
                                    l_TreeNodeFileInfo.m_strInArchive   = s_TriggerVFS.VFSNames[iIndex];
                                    l_TreeNodeFileInfo.m_iArchiveNumber = s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount;

                                    //string l_strFullPath = strKey.Substring( 1 );
                                    //TriggerVFS.FileInfo l_FileInfo = new TriggerVFS.FileInfo();
                                    //if ( s_TriggerVFS.GetFileInfo( l_strFullPath, ref l_FileInfo ) == true )
                                    //{
                                    //    l_TreeNodeFileInfo.m_iAttribute = l_FileInfo.m_iAttribute;
                                    //    l_TreeNodeFileInfo.m_iChecksum = l_FileInfo.m_iChecksum;
                                    //}
                                    //else
                                    //    m_vfsOpenIndexForm.richTextBox.AppendText( "GetFileInfo(" + l_strFullPath + ") Error!\n" );

                                    //l_TreeNodeFileInfo.m_iFileSize = s_TriggerVFS.GetFileSize( l_strFullPath );

                                    // 添加 ListViewItem
                                    ListViewItemFileInfo l_ListViewItemFileInfo = new ListViewItemFileInfo();
                                    l_ListViewItemFileInfo.m_ListViewItem   = new ListViewItem(l_TreeNodeFileInfo.m_strFileName);
                                    l_ListViewItemFileInfo.m_strFullPath    = strKey;
                                    l_ListViewItemFileInfo.m_strFileName    = strPath[strPath.Length - 1];
                                    l_ListViewItemFileInfo.m_strInArchive   = s_TriggerVFS.VFSNames[iIndex];
                                    l_ListViewItemFileInfo.m_iArchiveNumber = s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount;
                                    l_TreeNodeFileInfoDirectory.m_ListViewItemFileInfo.Add(l_ListViewItemFileInfo);

                                    s_ListItemHybridDictionary.Add(l_ListViewItemFileInfo.m_ListViewItem, l_ListViewItemFileInfo);
                                }
                                else
                                {
                                    l_TreeNodeFileInfo.m_IsDirectory  = true;
                                    l_TreeNodeFileInfo.m_strFullPath  = strKey;
                                    l_TreeNodeFileInfo.m_strInArchive = string.Empty;

                                    l_ParentTree.Nodes.Add(l_TreeNode);
                                    s_strHybridDictionary.Add(strKey, l_TreeNodeFileInfo);
                                    s_nodeHybridDictionary.Add(l_TreeNode, l_TreeNodeFileInfo);
                                    l_TreeNodeFileInfoDirectory = l_TreeNodeFileInfo;
                                }
                            }
                            else
                            {
                                l_TreeNode = l_TreeNodeFileInfo.m_TreeNode;
                                l_TreeNodeFileInfoDirectory = l_TreeNodeFileInfo;
                            }

                            l_ParentTree = l_TreeNode;
                        }
                    }
                }

                m_vfsOpenIndexForm.progressBar1.Value = m_vfsOpenIndexForm.progressBar1.Maximum;
                m_vfsOpenIndexForm.progressBar1.Value = 0;

                m_vfsOpenIndexForm.richTextBox.AppendText("文件读取完成!\n");

                s_RootTree = l_RootTree;

                OpenMenu(m_vfsOpenIndexForm);
                s_isExtractAllThread = false;
            }
            private static void ExtractAllFileThreadProc()
            {
                s_isExtractAllThread = true;
                CloseMenu(m_vfsExtractAllFileEditorForm);

                m_vfsExtractAllFileEditorForm.richTextBox.AppendText("开始解压全部文件中...\n");

                if (Directory.Exists("Demo ExtractFile") == false)
                {
                    Directory.CreateDirectory("Demo ExtractFile");
                }

                for (int iIndex = 0; iIndex < s_TriggerVFS.FileTreeArray.Length; iIndex++)
                {
                    for (int iIndex2 = 0; iIndex2 < s_TriggerVFS.FileTreeArray[iIndex].m_iFileCount; iIndex2++)
                    {
                        m_vfsOpenIndexForm.progressBar1.PerformStep();

                        string   strPathName = s_TriggerVFS.FileTreeArray[iIndex].m_strFiles[iIndex2];
                        string[] strPath     = strPathName.Split("\\".ToCharArray());

                        m_vfsExtractAllFileEditorForm.progressBar1.PerformStep();

                        if (strPath.Length == 0)
                        {
                            continue;
                        }

                        string strKey = string.Empty;
                        for (int iIndex3 = 0; iIndex3 < strPath.Length; iIndex3++)
                        {
                            if (s_isFormClose == true)
                            {
                                s_isThreadClose      = true;
                                s_isExtractAllThread = false;
                                m_vfsExtractAllFileEditorForm.richTextBox.AppendText("程序关闭中...当前的操作终止");
                                m_vfsExtractAllFileEditorForm.Close();
                                return;
                            }

                            strKey = string.Concat(strKey, "\\", strPath[iIndex3]);

                            if (iIndex3 == (strPath.Length - 1))
                            {
                                string l_strExtractFileFullPath = strKey.Substring(1);
                                m_vfsExtractAllFileEditorForm.richTextBox.AppendText("文件" + l_strExtractFileFullPath + "开始解压中...\n");

                                s_TriggerVFS.ExtractFile(l_strExtractFileFullPath, "Demo ExtractFile\\" + l_strExtractFileFullPath);

                                m_vfsExtractAllFileEditorForm.richTextBox.AppendText("文件解压在 Demo ExtractFile\\" + l_strExtractFileFullPath + " 中, 完成!\n");
                            }
                            else
                            {
                                if (Directory.Exists("Demo ExtractFile" + strKey) == false)
                                {
                                    Directory.CreateDirectory("Demo ExtractFile" + strKey);
                                    m_vfsExtractAllFileEditorForm.richTextBox.AppendText("目录" + "Demo ExtractFile" + strKey + "创建完成!\n");
                                }
                            }
                        }
                    }
                }

                m_vfsOpenIndexForm.progressBar1.Value = m_vfsOpenIndexForm.progressBar1.Maximum;
                m_vfsOpenIndexForm.progressBar1.Value = 0;

                m_vfsExtractAllFileEditorForm.richTextBox.AppendText("文件全部解压完成!\n");

                OpenMenu(m_vfsExtractAllFileEditorForm);
                s_isExtractAllThread = false;
            }