大家好:
我在用electron
寫一個類似編輯器的應用程式,在應用程式的選單列中一項儲存檔案功能:
#因為選單列是在主線程中的,但是保存操作需要獲取渲染線程中一個編輯器裡面的內容.官網只有渲染線程請求主線程的例子(ipcMain和ipcRenderer
),但是ipcMain
好像不能主動請求ipcRenderer
.
所以想問大家,主執行緒怎麼主動請求渲染執行緒呼叫渲染執行緒的方法或觸發渲染執行緒的事件呢?
謝謝!
曾经蜡笔没有小新2017-07-03 11:44:13
找到解決方法了 ^_^
在ipcMain
和ipcRenderer
中同時監聽兩個相同名字的事件,然後在主執行緒中使用focusedWindow.webContents.send('save-file')
觸發,在ipcRenderer
的save-file
事件中請求ipcMain
的save-file
事件並攜帶相應的數據就好了
ipcMain:
ipcRenderer:ipcMain.on('save-file' ,(event ,arg) => {
console.log(arg)
})
ipcRenderer.on('save-file' ,(event ,arg) => {
ipcRenderer.send('save-file' ,'test')
})
巴扎黑2017-07-03 11:44:13
你可以先給渲染線程綁定一個事件,比如說ipcRenderer.on('save', save);
,然後在用戶點擊選單中的Save 時觸發這個事件,然後在save
函數裡再廣播事件,並且傳出來你需要的資料。
有點繞,不過暫時只能想到這樣。