美文网首页
C#封装Dll 与调用

C#封装Dll 与调用

作者: min_dou | 来源:发表于2019-04-26 09:57 被阅读0次

使用V s 新建项目 类库 ,


553.png

在新建的类中, 添加自己的 定义的方法
要对外暴露的方法定义为public 不暴露的私有方法定义为private
因为封装的dll 要与Electron 框架的桌面应用对接,所以尝试了 封装了异步方法
在网上简单的了解一下异步编程, 他的作用和thread 相似 异步的出现是thread 的升级版 thread 对有返回值的 类型的委托 没有办法解决, 而async 他做到了,( 对于有返回值类型的委托使用Task对象就能简单的解决),
1.async:修饰符可将方法、lambda 表达式或匿名方法指定为异步。
2.await:运算符应用于异步方法中的任务,会让当前方法等待其挂起的方法执行完毕后再继续执行当前方法。await关键字只能在async声明的异步方法中使用,方法返回类型必须是Task<T>或Task.
3 返回值类型, 返回类型只能是void、Task、Task<T> ,如果你要执行的异步方法是有返回值的,那么泛型T就定义为你所需返回的类型
具体的 方法实现如下

  //返回类型= void的   
    public async static void testVoidAsync()
    {
        await Task.Run(() =>
        {
            Console.WriteLine("void 类型的异步方法");
        });
    }
    //返回类型= task  
    public async static Task testTaskasync()
    {
        await Task.Run(() =>
        {

            Console.WriteLine("Task 类型异步方法");
        });
    }
    //返回类型是Task<T>  <object> 可以为任意类型, 必须要有返回值
    public async static Task<int> testTaskT()
    {
        await Task.Run(() =>
        {
            Console.WriteLine("Task<T>类型异步");
        });
        return 3;
    }
    //返回类型是Task<T>且带参数的  object  可以为任意类型 
    public static async Task<object> testAsyncWithParm(object input)
    {
        //以参数为数组 为例
        String[] paramets = (String[])input;
        string adress;
        string phoneNum;
        int age;
        await Task.Run(() =>
        {
            for (int i = 0; i < paramets.Length; i++)
            {
                adress = paramets[0].ToString();
                phoneNum = paramets[1].ToString();
                age = Convert.ToInt32(paramets[2]);
            }
        });
        return null;
    }

异步编程简单的了解到此。
言归正传到dll 库封装了, 方法已经都准备好了,只欠dll 和demo 验证。 代码编写完成后, 右键解决方案 → 重新生成解决方案或用(F6)快捷键 。
在 项目中使用自己生成的dll
右键 解决方案 →添加引用

730.jpg
找不到怎么添加如图
731.png
找到生成dll 的目录
364.png
添加即可。
引用添加好了 就说调用吧 , 在 引用中 添加 testdll 引用, 实例化对象 , 调用方法。
以代码中最后一个带参的方法为例简单看一下
using testDll;
private void button3_Click(object sender, EventArgs e)
{
Test test = new Test();
string[] parm = new string[] { " 深圳市龙岗区", "1312850XXXX", "28" };
Task t1 = test.testAsyncWithParm(parm);
}

相关文章

  • C#封装Dll 与调用

    使用V s 新建项目 类库 , 在新建的类中, 添加自己的 定义的方法要对外暴露的方法定义为public 不...

  • PY爬虫极速学习 (三)函数 模块

    函数 封装就很熟悉了 就是面向对象三大特征 封装继承多态 两种变量 函数的定义与调用 模块 就类似于C#的 dll...

  • Unity3D C#和Lua互相调用

    原理:c#调用lua, 是c# 通过P/Invoke方式调用了lua的dll(一个C库),然后这个dll执行了lu...

  • C#与C++类型互转

    一、C#调用DLL文件时参数对应表 二、C#调用C++编写的DLL函数, 以及各种类型的参数传递 如果函数只有传入...

  • C#与Lua交互过程和原理

    C#与Lua交互过程: C# Call Lua :由C#文件先调用Lua解析器底层dll库(由C语言编写),再由d...

  • C# 制作Com组件:java调用.net DLL的方法

    巧用C#做中间语言 实现Java调用.net DLL. 本文将详细为大家介绍一个java调用.net DLL的方法...

  • C#调用OpenCV函数的实现

    C#调用OpenCV函数的实现步骤:1、C++编写调用OpenCV函数的方法,编译成dll;2、C#引用C++生成...

  • C#调用PortAudio.dll方法Pa_Initialize

    C#调用PortAudio.dll方法Pa_Initialize()失败,返回错误paUnanticipatedH...

  • Lua与C#之间的交互

    luainterface.dll的功能是c#访问lua,里面封装了一些类 luanet.dll的功能是负责lua访...

  • C++调用dll C#调用dll

    c++调用dll方法 如果运行时提示找不到dll,或者加载失败,可以修改程序属性-常规-项目默认值-字符集 改成使...

网友评论

      本文标题:C#封装Dll 与调用

      本文链接:https://www.haomeiwen.com/subject/kqxzwqtx.html