首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C# .NET事件处理电子Node.js中的edge.js

用C# .NET事件处理电子Node.js中的edge.js
EN

Stack Overflow用户
提问于 2019-04-18 14:49:28
回答 1查看 1.6K关注 0票数 0

在我的电子项目中,我需要从js调用我的C# DLL,它以这种方式工作得很好:

c#

代码语言:javascript
复制
namespace Electron.Wrapper
{
    public class QueryWrapper
    {

        public async Task<object> OnQuery(dynamic request)
        {
            ...
            return ..;
        }
    }
}

js

代码语言:javascript
复制
let edge = require('electron-edge-js');
let queryWrapperQuery = edge.func({
    assemblyFile: '..dllUrl..',
    typeName: 'Electron.Wrapper.QueryWrapper',
    methodName: 'OnQuery'
});
window.query = function (options) {
    queryWrapperQuery(JSON.stringify(options), function (error, result) {
        ...
    });
}

问题是,我使用了一个外部DLL,它有时会触发异步事件,因此我需要找到一种从js侦听.NET事件的方法。

我找到了这边请来解决我的问题,但我认为这不是正确的方法,因为我需要一个电子类库,我也不知道如何使用它,而且我可能也不需要WebSocketServer。

将对.Net和js示例进行估值。

谢谢你,安德里亚

更新1我找到了这边请,冷是对的吗?我正在尝试实现.net,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-23 07:06:15

我找到了一个好办法:

C#:

代码语言:javascript
复制
public Task<object> WithCallback(IDictionary<string, object> payload)
{
    Func<object, Task<object>> changed = (Func<object, Task<object>>)payload["changed"];
    return Task.Run(async () => await OnQuery(payload["request"], changed));
}

联署材料:

代码语言:javascript
复制
var withCallback = edge.func({
    assemblyFile: '..dllUrl..',
    typeName: 'Electron.Wrapper.QueryWrapper',
    methodName: 'WithCallback' 
});

window.query = function (options) {
    function triggerResponse(error, result) {
        ...
    }

    withCallback({
        changed: (result) => triggerResponse(null, result),
        request: JSON.stringify(options)
    }, triggerResponse);
};

当您需要触发器时,当某些更改时,您应该在OnQuery函数中使用参数“有效载荷”:

代码语言:javascript
复制
public async Task<object> OnQuery(dynamic request, dynamic payload = null)
{
    ...
}

接下来,OnQuery以这种方式返回您可以再次调用的值js回调:

代码语言:javascript
复制
payload("Notify js callback!");

我希望这能帮到别人!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55748564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档