C#封装Dll 与调用

2019-04-26  本文已影响0人  min_dou

使用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);
}
上一篇 下一篇

猜你喜欢

热点阅读