在多线程的electron js中调用渲染进程中的main.js函数

pw136qt2  于 2023-06-04  发布在  Electron
关注(0)|答案(1)|浏览(324)

我尝试在ElectronJS上创建多线程应用程序,但我以前从未使用过它,并且遇到了线程问题。我使用threads.js https://www.npmjs.com/package/threads作为多线程而不是默认的worker,当我调用sendFile()时,它可以从main.js中很好地工作,我在main.js中有方法可以创建worker并从thread中获得结果。

sendFile = async (text) => {
    const send = await spawn(new Worker('./src/service/sender.js'));
    const result = await send(text);

    console.log(result);
    await Thread.terminate(send);
}

package.json

{
  "name": "XXXXX",
  "version": "1.0.0",
  "description": "XXXXXXX",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "",
  "license": "ISC",
  "browser": {
    "fs": false
  },
  "dependencies": {
    "@electron/remote": "^2.0.9",
    "electron": "^24.3.1",
    "md5-file": "^5.0.0",
    "threads": "^1.7.0"
  }
}

如何在渲染块中使用此方法?

llew8vvj

llew8vvj1#

我使用下面的方法,也许有人也会发现它很有帮助。
我创建了一个在主进程(main.js)中创建Worker并获得响应的方法。

sendFile = async (text) => {
    const send = await spawn(new Worker('./src/service/sender.js'));
    const response = await send(text);
    await Thread.terminate(send);
}

在渲染进程(sender.js)中,我导入了ipcRenderer,并使用send()方法向主进程发送信息。

const { ipcRenderer } = require('electron');
ipcRenderer.send('msg', 'Hello from render process');

在主进程(main.js)中,我创建了一个监听器:

const { ipcMain } = require('electron');
ipcMain.on('msg', (event, data) => {
    sendFile(data);
});

相关问题