4463424 发表于 2023-8-5 10:05:49

请教下,全盘多线程搜索文件问题

我想在全盘搜索指定文件,不用多线程耗时很长,用多线程方法没整对,请高手指点下!!!用线程池老出问题。
文件见附件<火山程序 类型 = "通常" 版本 = 1 />

方法 我的主窗口_创建完毕 <接收事件 类型 = 整数 注释 = "当本组件及其中所有子组件均被创建完毕后发送此事件.">
参数 来源对象 <类型 = 我的主窗口 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
{
    变量 句柄 <类型 = 整数>

    句柄 = 取当前线程ID ()
    地址哈希.插入 (句柄, "c:")
    启动线程 (程序枚举, (变整数)句柄, , , )
    返回 (0)
}

<火山程序 类型 = "通常" 版本 = 1 />

方法 程序枚举 <静态 类型 = 整数>
参数 路径_指针 <类型 = 变整数 注释 = "提供启动时传递到线程函数的用户参数值1">
{
    变量 文件查找 <类型 = 文件查找类>
    变量 路径 <类型 = 文本型>
    变量 临时名称 <类型 = 文本型>

    路径 = 地址哈希.取值 ((整数)路径_指针)
    临时名称 = 文件查找.寻找文件 (路径 + "\\" + "blender.exe", , )

    <折叠> 判断循环 (临时名称 != "")
    {
      调试输出 ("------------------------------------------")
      调试输出 (路径 + 临时名称)
      调试输出 ("------------------------------------------")
      临时名称 = 文件查找.寻找文件 ("", , )
    }

    临时名称 = 文件查找.寻找文件 (路径 + "\\" + "*.*", 文件属性.子目录, 文件属性.临时文件 + 文件属性.系统文件 + 文件属性.隐藏文件)

    如果真 (临时名称 != "")
    {
      变量 路径2 <类型 = 文本型>
      变量 句柄 <类型 = 整数>

      判断循环 (临时名称 != "")
      {
            路径2 = 路径 + "\\" + 临时名称

            句柄 = 取当前线程ID ()
            地址哈希.插入 (句柄, 路径2)
            启动线程 (程序枚举, (变整数)句柄)

            临时名称 = 文件查找.寻找文件 ("", 文件属性.子目录, 文件属性.临时文件 + 文件属性.系统文件 + 文件属性.隐藏文件)
      }

      地址哈希.删除 (句柄)
    }

    返回 (0)

}







页: [1]
查看完整版本: 请教下,全盘多线程搜索文件问题