異步接口


一、異步接口的聲明

我們已經了解到,如果一個方法是異步的,那么這個方法的返回值類型是Task<T>,那么接口中該如何規定異步方法呢?

一樣的,如果接口中的方法是異步的,那么規定方法的返回值類型是Task<T>即可,看下面的代碼:

interface ITest
{
    /// <summary>
    /// 方法的返回類型是Task<T>
    /// </summary>
    /// <returns></returns>
    Task<string> GetAsync();
}

注意:方法的前面不能添加async標注。因為從語法上來講,接口只能定義行為,不能定義實現,如果標注為async,就屬於實現了。我們在方法前面標注async,看看是什么效果:

我們看到,方法直接就報錯了。而接口的實現類中的方法可以標注為async,也可以不標注為async,看下面的代碼:

 /// <summary>
 /// 定義接口
 /// </summary>
 interface ITest
 {
     /// <summary>
     /// 方法的返回類型是Task<T>
     /// </summary>
     /// <returns></returns>
     ///不能標注為async
    Task<string> GetAsync();
 }

 public class Test : ITest
 {
     /// <summary>
     /// 方法不標注為async 返回一個Task<string>類型
     /// </summary>
     /// <returns></returns>
     //public Task<string> GetAsync()
     //{
     //    return Task.Run<string>(() => 
     //    {
     //        return "2";
     //    });
     //}

     /// <summary>
     /// 方法標注為async 直接返回一個string類型
     /// </summary>
     /// <returns></returns>
     public async Task<string> GetAsync()
     {
         return "3";
     }
 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM