none
回傳字串的非同步方法 RRS feed

  • 問題

  • 各位前輩好:

    小弟有個非同步的問題想要請教,假設我有個非同步的GetData方法,裡面去呼叫GetSQL這個方法,
    GetSQL這個方法,就是將前端傳入的參數,判斷有沒有值來去組SQL語法,最後回傳string如下:

    private string GetSQL(多筆前端參數)
    {
       string sql = "";
       //判斷如果前端參數不為null,就多加SQL語法
       return sql;
    }

    問題1:
    GetSQL的方法有需要寫成非同步的方法嗎? 目前執行起來滿正常的

    問題2:
    GetSQL如果改寫成非同步的方法之後,會出現警告,說我裡面沒有使用到await,如下:

    private async Task<string> GetSQL(多筆前端參數)
    {
       string sql = "";
       //判斷如果前端參數不為null,就多加SQL語法
       return sql;
    }





    • 已編輯 taco0508 2019年11月16日 上午 10:29
    2019年11月16日 上午 10:26

解答

  • 您可以這樣寫:

    public async Task<string> GetSQL(多筆前端參數) { string sql= "";

    //判斷如果前端參數不為null,就多加SQL語法 return await Task.Run(()=> sql); }

    或:

    public Task<string> GetSQL(多筆前端參數)
    {
        string sql= "";
    
        //判斷如果前端參數不為null,就多加SQL語法
        return Task.Run(()=> sql);
    }
    
    


    • 已標示為解答 taco0508 2019年11月18日 上午 07:47
    2019年11月16日 下午 02:00

所有回覆

  • 如果要用非同步存取資料庫 (使用 aync / await 語法)

    查詢要用  : SqlCommand.ExecuteReaderAsync 方法

    新增, 修改, 刪除用 SqlCommand.ExecuteNonQueryAsync(CancellationToken) 方法

    .NET Framework 版本要 >= 4.5

    關於非同步,請參閱: 非同步程式設計

    特別要注意 .NET Framework 4.5 中新增的非同步程式設計功能 這一節



    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/



    2019年11月16日 上午 10:43
    版主
  • 您可以這樣寫:

    public async Task<string> GetSQL(多筆前端參數) { string sql= "";

    //判斷如果前端參數不為null,就多加SQL語法 return await Task.Run(()=> sql); }

    或:

    public Task<string> GetSQL(多筆前端參數)
    {
        string sql= "";
    
        //判斷如果前端參數不為null,就多加SQL語法
        return Task.Run(()=> sql);
    }
    
    


    • 已標示為解答 taco0508 2019年11月18日 上午 07:47
    2019年11月16日 下午 02:00
  • 感謝前輩提醒,讓我又多學習到ADO也有非同步。
    2019年11月18日 上午 07:34
  • 感謝this前輩的回答,太棒了,現在不會出現警告了~

    2019年11月18日 上午 07:47