zoukankan      html  css  js  c++  java
  • electron调用c#动态库

    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

  • 相关阅读:
    springmvc,springboot单元测试配置
    uboot中ftd命令
    在根文件系统中查看设备树(有助于调试)
    协议类接口
    网络设备接口
    块设备驱动框架
    i2c子系统
    触摸屏
    input子系统
    原子访问、自旋锁、互斥锁、信号量
  • 原文地址:https://www.cnblogs.com/ants_double/p/11741899.html
Copyright © 2011-2022 走看看