码迷,mamicode.com
首页 > Windows程序 > 详细

electron调用c#动态库

时间:2019-10-26 10:48:57      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:value   sem   sync   class   app   引用   pre   代码   export   

electron调用c#动态库

新建C#动态库

  • 方法要以异步任务的方式,可以直接包装,也可以写成天然异步

  • 代码如下

    public class Class1
        {
            public async Task<Object> Invoke(object input)
            {
                return Helper.SayHi("Invoke1:" + (string)input);
            }
    
            public async Task<Object> Invoke2(object input)
            {
                return  Helper.SayHi("Invoke2:" + (string)input);
            }
    
            static class Helper
            {
                public static string SayHi(string param)
                {
                    return ".NET Welcomes " + param;
                }
            }

安装electron-edge-js模块

  • 调用代码如下

    
    const edge = require('electron-edge-js');
    console.info("call c#")
    
    var DemoDll = edge.func({
        assemblyFile: "electronedge.dll",
        typeName: "electronedge.Class1",
        methodName: "Invoke"
    });
    var DemoDll2 = edge.func({
        assemblyFile: "electronedge.dll",
        typeName: "electronedge.Class1",
        methodName: "Invoke2"
    });
    // module.exports.DemoDll = DemoDll;
    module.exports.DemoDll = {
        demo: DemoDll,
        demo2:DemoDll2
    };
    
    
  • node引用如下

    const DemoDll = require("./csharputil.js");
    
    DemoDll.DemoDll.demo("test", (err, value)=> {
      log.debug(value);
    
    });
  • 页面js引用如下

    • 包装如下

      function init() {
          const DemoDll = require("F:/yanghuaihua/electronedge/csharputil.js");
      
      
          return {
              demo: DemoDll.DemoDll.demo,
              demo2:DemoDll.DemoDll.demo2
      
          };
      }
      const initRequire = init();
    • 引用如下

      
          <script>window.$ = window.jQuery = require('./js/jquery-3.4.1.min.js');</script>
          <script type="text/javascript" src="./js/init.js"></script>
          <script type="text/javascript" src="./js/index.js"></script>
          <script type="text/javascript">
              $("#btn").click(function () {
                  initRequire.demo("test", (err, value) => {
                      $("#demo").append(value);
                      $("#demo").text(value);
                  });
                  setInterval(()=>{
                      initRequire.demo2("test", (err, value) => {
                      $("#demo").append(value);
                      $("#demo").text(value);
                  });
                  }, 1500);
      
              });
      
          </script>

源码地址

https://github.com/Ants-double/yumi/tree/master/electronedge

electron调用c#动态库

标签:value   sem   sync   class   app   引用   pre   代码   export   

原文地址:https://www.cnblogs.com/ants_double/p/11741899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!