|
|
发表于 2026-7-24 09:27:46
|
显示全部楼层
广东省深圳市
不太建议用。
| 窗口程序集名 | 保 留 | 保 留 | 备 注 | | 程序集1 | | | | | 变量名 | 类 型 | 数组 | 备 注 | | g_全局取消令牌 | 整数型 | | | g_线程句柄组 | 整数型 | 0 | _临时子程序 () 返回 (0 ) g_全局取消令牌 = CreateEventA (0, 真, 假, 0 ) 如果真 (g_全局取消令牌 = 0 ) 返回 (假)
临时句柄 = CreateThread (0, 0, 到整数 (&计划任务线程范例 ), 0, 0, 0 )加入成员 (g_线程句柄组, 临时句柄 ) 临时句柄 = CreateThread (0, 0, 到整数 (&计划任务线程范例 ), 0, 0, 0 ) 加入成员 (g_线程句柄组, 临时句柄 ) 返回 (真)| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | ret | 整数型 | | | | 重试次数 | 整数型 | | | | 请求成功 | 逻辑型 | | |
ret = WaitForSingleObject (g_全局取消令牌, 30000 ) 如果真 (ret = 0 ) 输出调试文本 (取程序名称 (1 ) + “|线程首次等待期间被退出”) 返回 () 判断循环首 (WaitForSingleObject (g_全局取消令牌, 30000 ) = #_WAIT_TIMEOUT )  判断循环首 (重试次数 < 3 )   . 
 如果真 (WaitForSingleObject (g_全局取消令牌, 5000 ) = 0 )  跳出循环 ()
 判断循环尾 () 判断循环尾 ()输出调试文本 (“XX|计划任务线程|正常退出”)返回 (0 )| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | i | 整数型 | | | | Code | 整数型 | | | | hThread | 整数型 | | | SetEvent (g_全局取消令牌 ) 如果真 (是否为空 (参_是否在UI线程执行 ) = 真 且 IsGUIThread (假) = 真) 参_是否在UI线程执行 = 真
计次循环首 (取数组成员数 (g_线程句柄组 ), i ) hThread = g_线程句柄组 [i ] 如果真 (hThread ≠ 0 )  如果 (参_是否在UI线程执行 = 真)     Code = MsgWaitForMultipleObjects (1, hThread, 假, #_INFINITE, #_QS_ALLEVENTS )   判断循环首 (Code = 1 )   处理事件 ()    Code = MsgWaitForMultipleObjects (1, hThread, 假, #_INFINITE, #_QS_ALLEVENTS )   判断循环尾 ()    WaitForSingleObject (hThread, #_INFINITE )
 CloseHandle (hThread )  g_线程句柄组 [i ] = 0   计次循环尾 () 重定义数组 (g_线程句柄组, 假, 0 ) 如果真 (g_全局取消令牌 ≠ 0 ) CloseHandle (g_全局取消令牌 ) g_全局取消令牌 = 0  | 窗口程序集名 | 保 留 | 保 留 | 备 注 | | 程序集1 | | | | | 变量名 | 类 型 | 数组 | 备 注 | | g_全局取消令牌 | 整数型 | | | g_线程句柄组 | 整数型 | 0 | _临时子程序 () 返回 (0 ) g_全局取消令牌 = CreateEventA (0, 真, 假, 0 ) 如果真 (g_全局取消令牌 = 0 ) 返回 (假)
临时句柄 = CreateThread (0, 0, 到整数 (&计划任务线程范例 ), 0, 0, 0 )加入成员 (g_线程句柄组, 临时句柄 ) 临时句柄 = CreateThread (0, 0, 到整数 (&计划任务线程范例 ), 0, 0, 0 ) 加入成员 (g_线程句柄组, 临时句柄 ) 返回 (真)| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | ret | 整数型 | | | | 重试次数 | 整数型 | | | | 请求成功 | 逻辑型 | | |
ret = WaitForSingleObject (g_全局取消令牌, 30000 ) 如果真 (ret = 0 ) 输出调试文本 (取程序名称 (1 ) + “|线程首次等待期间被退出”) 返回 () 判断循环首 (WaitForSingleObject (g_全局取消令牌, 30000 ) = #_WAIT_TIMEOUT )  判断循环首 (重试次数 < 3 )   . 
 如果真 (WaitForSingleObject (g_全局取消令牌, 5000 ) = 0 )  跳出循环 ()
 判断循环尾 () 判断循环尾 ()输出调试文本 (“XX|计划任务线程|正常退出”)返回 (0 )| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | i | 整数型 | | | | Code | 整数型 | | | | hThread | 整数型 | | | SetEvent (g_全局取消令牌 ) 如果真 (是否为空 (参_是否在UI线程执行 ) = 真 且 IsGUIThread (假) = 真) 参_是否在UI线程执行 = 真
计次循环首 (取数组成员数 (g_线程句柄组 ), i ) hThread = g_线程句柄组 [i ] 如果真 (hThread ≠ 0 )  如果 (参_是否在UI线程执行 = 真)     Code = MsgWaitForMultipleObjects (1, hThread, 假, #_INFINITE, #_QS_ALLEVENTS )   判断循环首 (Code = 1 )   处理事件 ()    Code = MsgWaitForMultipleObjects (1, hThread, 假, #_INFINITE, #_QS_ALLEVENTS )   判断循环尾 ()    WaitForSingleObject (hThread, #_INFINITE )
 CloseHandle (hThread )  g_线程句柄组 [i ] = 0   计次循环尾 () 重定义数组 (g_线程句柄组, 假, 0 ) 如果真 (g_全局取消令牌 ≠ 0 ) CloseHandle (g_全局取消令牌 ) g_全局取消令牌 = 0  |
| _INFINITE | -1 | | | _WAIT_OBJECT_0 | 0 | | | _WAIT_TIMEOUT | 258 | | | _QS_ALLEVENTS | 1215 | |
|
|