C#多線程實(shí)現(xiàn)異步接口
異步接口的聲明
我們已經(jīng)了解到,如果一個(gè)方法是異步的,那么這個(gè)方法的返回值類型是Task<T>,那么接口中該如何規(guī)定異步方法呢?
一樣的,如果接口中的方法是異步的,那么規(guī)定方法的返回值類型是Task<T>即可,看下面的代碼:
interface ITest { /// <summary> /// 方法的返回類型是Task<T> /// </summary> /// <returns></returns> Task<string> GetAsync(); }
注意:方法的前面不能添加async標(biāo)注。因?yàn)閺恼Z(yǔ)法上來(lái)講,接口只能定義行為,不能定義實(shí)現(xiàn),如果標(biāo)注為async,就屬于實(shí)現(xiàn)了。我們?cè)诜椒ㄇ懊鏄?biāo)注async,看看是什么效果:
我們看到,方法直接就報(bào)錯(cuò)了。而接口的實(shí)現(xiàn)類中的方法可以標(biāo)注為async,也可以不標(biāo)注為async,看下面的代碼:
/// <summary> /// 定義接口 /// </summary> interface ITest { /// <summary> /// 方法的返回類型是Task<T> /// </summary> /// <returns></returns> ///不能標(biāo)注為async Task<string> GetAsync(); } public class Test : ITest { /// <summary> /// 方法不標(biāo)注為async 返回一個(gè)Task<string>類型 /// </summary> /// <returns></returns> //public Task<string> GetAsync() //{ // return Task.Run<string>(() => // { // return "2"; // }); //} /// <summary> /// 方法標(biāo)注為async 直接返回一個(gè)string類型 /// </summary> /// <returns></returns> public async Task<string> GetAsync() { return "3"; } }
到此這篇關(guān)于C#多線程實(shí)現(xiàn)異步接口的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#通過(guò)XML節(jié)點(diǎn)屬性/屬性值讀取寫入XML操作代碼實(shí)例
本文主要介紹C#通過(guò)XML節(jié)點(diǎn)屬性、屬性值對(duì)XML的讀取,寫入操作,大家參考使用吧2013-11-11C#使用Dispose模式實(shí)現(xiàn)手動(dòng)對(duì)資源的釋放
這篇文章主要介紹了C#使用Dispose模式實(shí)現(xiàn)手動(dòng)對(duì)資源的釋放,涉及C#采用Dispose模式操作資源的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08C#?使用原生?System.IO.Compression?實(shí)現(xiàn)?zip?的壓縮與解壓
這篇文章主要介紹了C#?使用原生?System.IO.Compression?實(shí)現(xiàn)?zip?的壓縮與解壓,zip?是一個(gè)非常常見(jiàn)的壓縮包格式,本文主要用于說(shuō)明如何使用代碼?文件或文件夾壓縮為?zip壓縮包及其解壓操作,需要的朋友可以參考下2022-09-09