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

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"
  }
}

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

推荐答案

我使用下面的方法,也许有人也会觉得它有帮助.

我创建了一个在主进程(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);
});

Javascript相关问答推荐

无法在page. evalve()内部使用外部函数

如何循环访问对象数组并以关键值形式获得结果?

fetch在本地设置相同来源的cookie,但部署时相同的代码不会设置cookie

如何访问react路由v6加载器函数中的查询参数/搜索参数

具有相同参数的JS类

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

如何分配类型脚本中具有不同/额外参数的函数类型

Angular material 拖放堆叠的牌副,悬停时自动展开&

WebRTC关闭navigator. getUserMedia正确

如果Arrow函数返回函数,而不是为useEffect返回NULL,则会出现错误

不能将空字符串传递给cy.containes()

检索相加到点的子项

DOM不自动更新,尽管运行倒计时TS,JS

元素字符串长度html

从另一个数组中的对应行/键值对更新数组中的键值对对象

删除元素属性或样式属性的首选方法

匹配一个或多个可选重复的特定模式

图表4-堆叠线和条形图之间的填充区域

在将元素追加到DOM之前,createElement()是否会触发回流?混淆abt DocumentFragment行为

如何在Reaction中设置缺省值, Select 下拉列表,动态追加剩余值?