C#封裝Dll 與調(diào)用

使用V s 新建項目 類庫 ,


553.png

在新建的類中, 添加自己的 定義的方法
要對外暴露的方法定義為public 不暴露的私有方法定義為private
因為封裝的dll 要與Electron 框架的桌面應(yīng)用對接,所以嘗試了 封裝了異步方法
在網(wǎng)上簡單的了解一下異步編程, 他的作用和thread 相似 異步的出現(xiàn)是thread 的升級版 thread 對有返回值的 類型的委托 沒有辦法解決, 而async 他做到了,( 對于有返回值類型的委托使用Task對象就能簡單的解決),
1.async:修飾符可將方法、lambda 表達式或匿名方法指定為異步。
2.await:運算符應(yīng)用于異步方法中的任務(wù),會讓當前方法等待其掛起的方法執(zhí)行完畢后再繼續(xù)執(zhí)行當前方法。await關(guān)鍵字只能在async聲明的異步方法中使用,方法返回類型必須是Task<T>或Task.
3 返回值類型, 返回類型只能是void、Task、Task<T> ,如果你要執(zhí)行的異步方法是有返回值的,那么泛型T就定義為你所需返回的類型
具體的 方法實現(xiàn)如下

  //返回類型= 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>且?guī)?shù)的  object  可以為任意類型 
    public static async Task<object> testAsyncWithParm(object input)
    {
        //以參數(shù)為數(shù)組 為例
        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 庫封裝了, 方法已經(jīng)都準備好了,只欠dll 和demo 驗證。 代碼編寫完成后, 右鍵解決方案 → 重新生成解決方案或用(F6)快捷鍵 。
在 項目中使用自己生成的dll
右鍵 解決方案 →添加引用

730.jpg

找不到怎么添加如圖
731.png

找到生成dll 的目錄
364.png

添加即可。
引用添加好了 就說調(diào)用吧 , 在 引用中 添加 testdll 引用, 實例化對象 , 調(diào)用方法。
以代碼中最后一個帶參的方法為例簡單看一下
using testDll;
private void button3_Click(object sender, EventArgs e)
{
Test test = new Test();
string[] parm = new string[] { " 深圳市龍崗區(qū)", "1312850XXXX", "28" };
Task t1 = test.testAsyncWithParm(parm);
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容