From 4d5c744583f5882f05f63fdf7832f8a54b3379ac Mon Sep 17 00:00:00 2001 From: xuncha <1658671838@qq.com> Date: Sat, 28 Feb 2026 16:28:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/services/keyService.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/electron/services/keyService.ts b/electron/services/keyService.ts index 538e8cc..5fe0dd8 100644 --- a/electron/services/keyService.ts +++ b/electron/services/keyService.ts @@ -855,7 +855,7 @@ export class KeyService { } let found = null; - for (let upper = end; upper > start; upper--) { + for (let upper = end - 1; upper >= start; upper--) { // 我就写 -- if (upper % 100000 === 0 && upper !== start) { parentPort.postMessage({ type: 'progress', scanned: 100000 }); @@ -943,18 +943,15 @@ export class KeyService { cleanup() resolve(msg.key) } else if (msg.type === 'done') { - // 单个 worker 跑完了没有找到 - activeWorkers-- - if (activeWorkers === 0 && !resolved) resolve(null) + // 单个 worker 跑完了没有找到(计数统一在 exit 事件处理) } }) worker.on('error', (err) => { console.error('Worker error:', err) - activeWorkers-- - if (activeWorkers === 0 && !resolved) resolve(null) }) + // 统一在 exit 事件中做完成计数,避免 done/error + exit 双重递减 worker.on('exit', () => { activeWorkers-- if (activeWorkers === 0 && !resolved) resolve(null) @@ -984,7 +981,7 @@ export class KeyService { onProgress?.('正在读取加密模板区块...') const ciphertexts = this.getCiphertextsFromTemplate(templateFiles) - if (ciphertexts.length === 0) return { success: false, error: '无法读取加密模板数据' } + if (ciphertexts.length < 2) return { success: false, error: '可用的加密样本不足(至少需要2个),请确认账号目录下有足够的模板图片' } onProgress?.(`成功提取 ${ciphertexts.length} 个特征样本,准备交叉校验...`) onProgress?.(`准备启动 ${os.cpus().length || 4} 线程并发爆破引擎 (基于 wxid: ${wxid})...`)