diff --git a/src/ElectronNET.API/API/IpcMain.cs b/src/ElectronNET.API/API/IpcMain.cs
index 62961cd..1bbed56 100644
--- a/src/ElectronNET.API/API/IpcMain.cs
+++ b/src/ElectronNET.API/API/IpcMain.cs
@@ -102,6 +102,29 @@ namespace ElectronNET.API
});
}
+ ///
+ /// Send a message to the renderer process synchronously via channel,
+ /// you can also send arbitrary arguments.
+ ///
+ /// Note: Sending a synchronous message will block the whole renderer process,
+ /// unless you know what you are doing you should never use it.
+ ///
+ ///
+ ///
+ public void OnSync(string channel, Func> listener)
+ {
+ BridgeConnector.Socket.Emit("registerSyncIpcMainChannel", channel);
+ BridgeConnector.Socket.On(channel, (args) =>
+ {
+ Task.Run(async () =>
+ {
+ var arg = FormatArguments(args);
+ var result = await listener(arg);
+ BridgeConnector.Socket.Emit(channel + "Sync", result);
+ });
+ });
+ }
+
///
/// Adds a one time listener method for the event. This listener is invoked only
/// the next time a message is sent to channel, after which it is removed.
@@ -172,6 +195,26 @@ namespace ElectronNET.API
});
}
+ ///
+ /// Adds a handler for an invokeable IPC. This handler will be called
+ /// whenever a renderer calls ipcRenderer.invoke(channel, ...args).
+ ///
+ /// Channelname.
+ /// Callback Method.
+ public void Handle(string channel, Func> listener)
+ {
+ BridgeConnector.Socket.Emit("registerHandleIpcMainChannel", channel);
+ BridgeConnector.Socket.On(channel, (args) =>
+ {
+ Task.Run(async () =>
+ {
+ var arg = FormatArguments(args);
+ var result = await listener(arg);
+ BridgeConnector.Socket.Emit(channel + "Handle", result);
+ });
+ });
+ }
+
///
/// Handles a single invokeable IPC message, then removes the listener.
/// See ipcMain.handle(channel, listener).
@@ -189,6 +232,26 @@ namespace ElectronNET.API
});
}
+ ///
+ /// Handles a single invokeable IPC message, then removes the listener.
+ /// See ipcMain.handle(channel, listener).
+ ///
+ /// Channelname.
+ /// Callback Method.
+ public void HandleOnce(string channel, Func> listener)
+ {
+ BridgeConnector.Socket.Emit("registerHandleOnceIpcMainChannel", channel);
+ BridgeConnector.Socket.Once(channel, (args) =>
+ {
+ Task.Run(async () =>
+ {
+ var arg = FormatArguments(args);
+ var result = await listener(arg);
+ BridgeConnector.Socket.Emit(channel + "HandleOnce", result);
+ });
+ });
+ }
+
///
/// Removes any handler for channel, if present.
///