From fe1a20759def0c4aa23ddf58c79c8a3ac4e46df9 Mon Sep 17 00:00:00 2001 From: digua Date: Mon, 12 Jan 2026 20:24:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=B3=E9=97=AD=E8=BD=AF=E4=BB=B6?= =?UTF-8?q?=E6=97=B6=E6=B8=85=E7=90=86=20Worker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main/index.ts | 7 ++++++- electron/main/ipc/merge.ts | 5 ++--- electron/main/ipcMain.ts | 14 +++++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/electron/main/index.ts b/electron/main/index.ts index 8046325..ea98581 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -2,7 +2,7 @@ import { app, shell, BrowserWindow, protocol, nativeTheme } from 'electron' import { join } from 'path' import { optimizer, is, platform } from '@electron-toolkit/utils' import { checkUpdate } from './update' -import mainIpcMain from './ipcMain' +import mainIpcMain, { cleanup } from './ipcMain' import { initAnalytics, trackDailyActive } from './analytics' import { initProxy } from './network/proxy' import { needsLegacyMigration, migrateFromLegacyDir, ensureAppDirs } from './paths' @@ -207,6 +207,11 @@ class MainProcess { // @ts-ignore app.isQuiting = true }) + + // 退出前清理资源 + app.on('will-quit', () => { + cleanup() + }) }) } diff --git a/electron/main/ipc/merge.ts b/electron/main/ipc/merge.ts index b66853e..3d97ede 100644 --- a/electron/main/ipc/merge.ts +++ b/electron/main/ipc/merge.ts @@ -29,7 +29,7 @@ function clearTempDbCache(filePath: string): void { /** * 清理所有缓存(删除所有临时数据库) */ -function clearAllTempDbCache(): void { +export function cleanupTempDbs(): void { for (const tempDbPath of tempDbCache.values()) { deleteTempDatabase(tempDbPath) } @@ -125,9 +125,8 @@ export function registerMergeHandlers(ctx: IpcContext): void { if (filePath) { clearTempDbCache(filePath) } else { - clearAllTempDbCache() + cleanupTempDbs() } return true }) } - diff --git a/electron/main/ipcMain.ts b/electron/main/ipcMain.ts index 4463c39..3587671 100644 --- a/electron/main/ipcMain.ts +++ b/electron/main/ipcMain.ts @@ -8,7 +8,7 @@ import type { IpcContext } from './ipc/types' // 导入各功能模块 import { registerWindowHandlers } from './ipc/window' import { registerChatHandlers } from './ipc/chat' -import { registerMergeHandlers, initMergeModule } from './ipc/merge' +import { registerMergeHandlers, initMergeModule, cleanupTempDbs } from './ipc/merge' import { registerAIHandlers } from './ipc/ai' import { registerMessagesHandlers } from './ipc/messages' import { registerCacheHandlers } from './ipc/cache' @@ -50,4 +50,16 @@ const mainIpcMain = (win: BrowserWindow) => { console.log('[IpcMain] All IPC handlers registered successfully') } +export const cleanup = () => { + console.log('[IpcMain] Cleaning up resources...') + try { + // 关闭 Worker + worker.closeWorker() + // 清理临时数据库 + cleanupTempDbs() + } catch (error) { + console.error('[IpcMain] Error during cleanup:', error) + } +} + export default mainIpcMain