1 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
所以我想出的解決方案如下:
在瀏覽器端/渲染器進(jìn)程(在index.tsx)中,我執(zhí)行以下操作:
// index.tsx (renderer process)
// ...
export const GLOBAL_SENDER_ID = uuidV4();
const store = storeCreator({
level: 'renderer',
reducer: renderersReducer,
sagas: mainAppWindowSagas,
senderId: GLOBAL_SENDER_ID,
});
const listenerRemover = listenToFromMainDispatchedActions(store, GLOBAL_SENDER_ID);
const cleanup = (): void => {
appLogger.log('WINDOW CLOSING');
listenerRemover();
window.removeEventListener('beforeunload', cleanup);
}
window.addEventListener('beforeunload', cleanup)
...
在主進(jìn)程中,我刪除了所有 ipcMain 對(duì)應(yīng)項(xiàng):
// index.ts
import { app, ipcMain } from 'electron';
import main from './main'
// ....
app.whenReady()
.then(main)
.catch((error) => {
appLogger.error(TAG, error);
});
// .....
app.on('before-quit', () => {
Object.values(IPCChannels).forEach(
(channel) => {
ipcMain.removeAllListeners(channel);
}
);
appLogger.log('CLEANED ALL IPCS');
appLogger.log('Done, BYEBYE');
});
它似乎按預(yù)期工作并且我設(shè)法在相關(guān)位置看到日志,雖然我不太確定這種方法的有效性,但我會(huì)在幾天內(nèi)不回答我的問題(今天是 13.08.2020 12:15CEST)。
如果我在一周左右的時(shí)間里得不到任何其他/更好的答案,我會(huì)接受我的答案作為正確答案。
添加回答
舉報(bào)