四种方式实现.NET异步编程实例代码总结

今天在公司,忙里偷闲,总结一下.NET中的异步调用函数的实现方法,DebugLZQ在写这篇博文之前自己先动手写了
【菜科解读】
最近很忙,既要外出找工作又要兼顾老板公司的项目。
今天在公司,忙里偷闲,总结一下.NET中的异步调用函数的实现方法,DebugLZQ在写这篇博文之前自己先动手写了本文的所有示例代码,开写之前是做过功课的,用代码说话方有说服力。
本文的内容旨在用最简洁的代码来把异步调用的方法说清楚,园子里的高手老鸟可以绕行,不喜勿喷,非诚勿扰~
lz的前一篇文章简单的说了下异步,主要是从理解上来讲;这篇文章主要写具体的实现方法。
实现异步编程有4种方法可供选择,这4种访求实际上也对应着4种异步调用的模式,分为“等待”和“回调”两大类。
四种方法,我在代码中都进行了详细的注释,这里不罗嗦了,直接用代码说明吧
第一种方法:BeginEnvoke EndEnvoke方法,属于“等待”类。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 异步调用实现方法汇总 /// /// 异步调用方法总结: /// 1.BeginEnvoke EndEnvoke /// 当使用BeginInvoke异步调用方法时,如果方法未执行完,EndInvoke方法就会一直阻塞,直到被调用的方法执行完毕 /// class Program public delegate void PrintDelegate(string s); static void Main(string[] args) PrintDelegate printDelegate = Print; Console.WriteLine("主线程"); IAsyncResult result= printDelegate.BeginInvoke("Hello World.", null, null); Console.WriteLine("主线程继续执行..."); //当使用BeginInvoke异步调用方法时,如果方法未执行完,EndInvoke方法就会一直阻塞,直到被调用的方法执行完毕 printDelegate.EndInvoke(result); Console.WriteLine("Press any key to continue..."); Console.ReadKey(true); public static void Print(string s) Console.WriteLine("异步线程开始执行:"+s); Thread.Sleep(5000);
需要注意的地方,代码中都有注明了,程序运行结果如下:第二种方法:WaitOne。
同样属于“等待”类。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 异步调用实现方法汇总2 /// /// 异步调用方法总结: /// 2.WaitOne /// 可以看到,与EndInvoke类似,只是用WaitOne函数代码了EndInvoke而已。/// class Program public delegate void PrintDelegate(string s); static void Main(string[] args) PrintDelegate printDelegate = Print; Console.WriteLine("主线程"); IAsyncResult result = printDelegate.BeginInvoke("Hello World.", null, null); Console.WriteLine("主线程继续执行..."); result.AsyncWaitHandle.WaitOne(-1, false); Console.WriteLine("Press any key to continue..."); Console.ReadKey(true); public static void Print(string s) Console.WriteLine("异步线程开始执行:" + s); Thread.Sleep(5000);}
需要注意的地方,代码中都有注明了,程序运行结果如下:
第三种方法:轮询。
也是属于“等待”类。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 异步调用实现方法汇总3 /// /// 异步调用方法总结: /// 3.轮询 /// 之前提到的两种方法,只能等下异步方法执行完毕, /// 在完毕之前没有任何提示信息,整个程序就像没有响应一样,用户体验不好, /// 可以通过检查IasyncResult类型的IsCompleted属性来检查异步调用是否完成, /// 如果没有完成,则可以适时地显示一些提示信息 /// class Program public delegate void PrintDelegate(string s); static void Main(string[] args) PrintDelegate printDelegate = Print; Console.WriteLine("主线程:"+Thread.CurrentThread.ManagedThreadId ); IAsyncResult result = printDelegate.BeginInvoke("Hello world.", null, null); Console.WriteLine("主线程:" + Thread.CurrentThread.ManagedThreadId + ",继续执行..."); while (!result.IsCompleted) Console.WriteLine("."); Thread.Sleep(500); Console.WriteLine("主线程:" + Thread.CurrentThread.ManagedThreadId + " Press any key to continue..."); Console.ReadKey(true); public static void Print(string s) Console.WriteLine("当前线程:" + Thread.CurrentThread.ManagedThreadId + s); Thread.Sleep(5000);}需要注意的地方,代码中都有注明了,程序运行结果如下:
第四种方法:回调。
当然属于“回调”类。
推荐!!!!
之前三种方法者在等待异步方法执行完毕后才能拿到执行的结果,期间主线程均处于等待状态。
回调和它们最大的区别是,在调用BeginInvoke时只要提供了回调方法,那么主线程就不必要再等待异步线程工作完毕,异步线程在工作结束后会主动调用我们提供的回调方法,并在回调方法中做相应的处理。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace 异步调用实现方法汇总4 /// /// 异步调用方法总结: /// 4.回调 /// 之前三种方法者在等待异步方法执行完毕后才能拿到执行的结果,期间主线程均处于等待状态。/// 回调和它们最大的区别是,在调用BeginInvoke时只要提供了回调方法,那么主线程就不必要再等待异步线程工作完毕, /// 异步线程在工作结束后会主动调用我们提供的回调方法,并在回调方法中做相应的处理,例如显示异步调用的结果。
/// class Program public delegate void PrintDelegate(string s); static void Main(string[] args) PrintDelegate printDelegate = Print; Console.WriteLine("主线程."); printDelegate.BeginInvoke("Hello world.", PrintComeplete, printDelegate); Console.WriteLine("主线程继续执行..."); Console.WriteLine("Press any key to continue..."); Console.ReadKey(true); public static void Print(string s) Console.WriteLine("当前线程:"+s); Thread.Sleep(5000); //回调方法要求 //1.返回类型为void //2.只有一个参数IAsyncResult public static void PrintComeplete(IAsyncResult result) (result.AsyncState as PrintDelegate).EndInvoke(result); Console.WriteLine("当前线程结束." + result.AsyncState.ToString());}
需要注意的地方,代码中都有注明了,程序运行结果如下:
以上就是四种实现异步调用函数的四种方法,说的很清楚了,就写这么多~
四种,方式,实现,.NET,异步,编程,实例,代码,灵活就业人员社保缴纳方式有哪些?(25/04/23)
或者依次点击微信我服务城市服务社保社保缴费,进入小程序后按照提示操作即可。
2.支付宝缴费:打开支付宝,搜索“灵活就业社会保险”小程序(注意选择对应地区的小程序)。
或者依次点击支付宝市民中心社保灵活就业社会保险,进入小程序后按照提示操作即可。
3.手机APP缴费:某些地区可能提供专门的税务APP。
用户需要下载并安装相应的APP,然后按照提示操作进行缴费。
4.线下缴费:灵活就业人员可以就近到社保分中心“税务一厅联办”窗口或所属税务局办税服务厅打印缴费单。
拿到缴费单后,再到协议商业银行进行缴费。
5.税务渠道:微信公众号:通过输入姓名、身份证号码后,选择缴费起止年月、缴费档次,系统计算缴费金额后直接缴费。
税务窗口缴费:对于社保、医保部门已核定的缴费金额,可以直接在税务窗口进行缴费。
请注意,各地的具体缴费方式和法规可能有所不同,因此建议您在缴费前咨询当地社保局或相关部门,以获取最准确的信息。
此外,灵活就业人员参保时有两种方法可选择,一种是以个人身份参加企业职工基本养老保险,另一种是在户籍地参加城乡居民养老保险,具体选择哪种方式也需根据当地方案和个人情况而定。
沈阳灵活就业人员社保缴费基数越高,养老金就越高吗?社保缴费基数与退休后的养老金是成正比关系,也就是说社保缴费基数越高,退休后能领取的养老金也就越多。
各个地区社保缴费基数是根据当地社会平均工资的60%-300%来定的,并且各个地区会在每年固定的时间核定社保基数,同时公布最新的最低以及最高基数。
一般来说,如果是企业帮员工缴纳的社保,都是按照最低基数来进行缴纳的,但也有一些公司是按照职工本人上年度的工资来作为加护缴纳的。
温馨提示:本数据仅供参考!具体需以当地有关法规为准!
宋朝人的出行方式有哪些?官品高低决定了工具的不同
制车技术的改善与騠高,表现了宋代城市经济、科技的新发展与风俗的新变化。
宋代北方陆路运送货品的大车,仍以牛驾为主,其次是骡、驴。
这种大车用牛、骡拉,可满载四五千斤远行各地。
周密记载:北方大车,可载四五千斤,用牛、骡十数驾之。
管车者仅一主一仆,叱咤之声,牛骡听命惟谨。
凡车必带数铎(铃),铎声闻数里之外,其地乃荒芜空野故也。
盖防其来车相遇,则预先为避,不然恐有突冲之虞耳。
终夜劳累,殊不类人,雪霜泥泞,尤艰苦异常;或泥滑陷溺,或折轴,有必要修整乃可行,濡滞有旬日。
和平车 北宋汴京城中的货运车,又叫“搬载车”,大者叫和平车,次者叫平头车,小者大力车等。
据记载有几种车:东京般(搬)载车,大者曰‘和平’,上有箱(车厢)无盖,箱如构栏而平,板壁前出两木、第二三尺许,驾车人在中间,两手扶捉鞭鞍驾之,前列骡或驴二十馀,前后作两行;或牛五七头拽之。
车两轮与箱齐,后有两斜木脚拖,夜中间悬一铁铃,行即有声,使远来车者相避。
仍于车后系驴骡二头,遇下峻险桥路,以鞭唬之,使倒坐锤车,令缓行也。
可载数十石…… 在张择端《清明上河图》中描绘的车辆达十多种,或四匹或两匹健骡拉的大车,即和平车,不同的仅是牲口数目以四头、两端为多,未见有十数头或二十头之多,后面也未系有驴、骡。
这种和平车的行走办法与曾经不同,即由人驾辕,牲畜拉车,缰绳一端缚绑在骡对面的轭套上,另一端缚扎在车轴上。
显然这种人驾辕、骡拉车的系驾办法,车速是较慢的,适合于负载物货多而不求快速的要求,因而多适于短途或京师城内外的运送之用。
听说,一天能行三十里,在两河一带民间普遍运用。
平头车 其式样与驾法如和平车相同,仅仅车型小一点,“两轮前长出长木作辕,木梢横一木,以独牛在辕内,项负横木,人在一边,以手牵牛鼻绳驾之,酒正店(大酒库)多以此载酒梢桶矣”。
这种车,宋画《清明上河图》、《溪山行旅图》、《盘车图》等均有描绘,它们大多是一牛驾辕,辕前拖曳的是三牛或四牛;车身高大,轮与车厢齐平,车厢上加拱形卷篷,远程跋涉中以防雨淋与日晒;车厢与卷篷之间有一隔板,似以堆放车夫的行李物品之地。
车夫在一旁行车,用手牵牛鼻绳。
从宋画《溪山行旅图》看,这种远程运送车,往往是数车结伴而行,很可能是一支有组织的运送队。
熙宁(1068—1077)曾经和平车,汴京士庶外出,多“赁驴”上路,而熙宁今后,“皆乘马”,这是畜力的变化。
独轮车 我国是最早创造与运用独轮车的国家之一,约始于;至宋代仍然流行各地。
据记载,汴京多见,又叫独辕车,或名只轮车。
这种车,是一个轮子的小车,前后二人把驾,两旁两人扶拐,前有骡曳,宋代又称为“串车”或“独辕车”。
这种独轮车尤适宜于山区。
沈括说宋人称独轮车为“木马”。
“行人以独轮小车,马鞍蒙之以乘,谓之木马。
”诗说:“ 耳宽帽新小疾,独辕车稳正闲游。
”通 牛车顶上加一大帷幔。
这种车在魏晋时是由贵族所乘,沿至唐宋。
《·舆服志》说一品至四品官均乘牛车,仅仅装饰品不同而已。
这种车,双辕双轮,车厢形似太师楼,有卷席篷顶,其上掩盖一张大帷幕。
如敦煌宋代“火宅喻”中画有这种牛车,长方形车厢上立棚,呈封闭状。
车门设在后边,垂遮惟帘。
棚前和两边开有棂窗格,棚顶呈拱形,前后出长檐;棚顶四角各立一桩,四桩上支撑一顶大帷幕。
帷幔绣以梅花图画,四周边垂缀幽穗,极为富丽。
驾车人扶辕步行,主人坐于车棚内能够逍遥自在。
宅眷坐车 宋代贵族妇女所坐的车,称为宅眷坐车。
这种车与卡车中的“平头车”类似,但以棕作车盖,车厢前后有构栏门、垂帘。
像古代的辎车,妇女坐在厢内,舒适逍遥。
陆游记载赵家宗室妇女所坐的牛车还挂上香球:京师(汴京)承平常,宗室戚里时入禁中(皇宫),妇女上犊车(牛车),皆用二小鬟,持香球在旁,而袖中又自持两小香球,车驰过,香烟如云,数里不停,尘土皆香。
红车 宋代妓女所坐车。
元祐七年(1092)十一月,举行南郊祭礼,为卤簿(仪仗),使导驾,内里有红车争道乱行,苏轼于车上草奏,明日勅有司严整仪卫。
舆轿 是一种共同的代步东西,往往在险恶山路上首先运用,《癸巳类稿·释名》因“状如桥中空离地”而取名,故古代桥与轿能够通用。
《》中騠到大禹治水时“山行即桥”。
1978年,河南固始侯古堆墓中出土了时间的“三乘木质舆桥”。
唐宋之时,舆桥十分盛行。
、大臣所坐的“步辇”,贵族妇女所坐的“檐子”,都是轿夫用手抬杠,高至齐腰,故称“腰舆”。
到宋代,始称“轿子”。
“太祖()初自陈桥拥戴入城,周恭帝即衣白 ,乘轿子,出居天清寺。
”宋代皇、皇后外出者,乘坐“舆”,这种舆比檐子稍增广,“把戏皆龙,前后檐皆剪棕,仪仗与驾出类似而小,仍于驾头、警跸耳。
士庶家与富家婚嫁,亦乘檐子,只无脊上铜凤花朵,……自有假赁地点”。
如是公主出嫁,还坐“金铜铸云凤花朵檐子”,这种“檐子”,高约五尺许,深八尺、阔四尺,内可坐六人之多,四周垂下绣额珠帘、白藤间花,极其富丽。
宋代内外所坐有,“银装白藤舆檐,内命妇皇亲所乘;白藤舆檐,为内外命妇所通乘”。
南宋时期,士大夫乘轿之风也日益盛行。
朱熹说:南渡曾经,士大夫皆不胜用轿,如(安石)、伊川(程颐)皆云不以人代畜,朝士皆乘马。
或有老病,朝廷赐令乘轿,犹力辞后受。
自南渡后至今,则无人不乘轿焉。
张贵义亦说:自渡江曾经,无今之轿,仅仅乘马。
所以有修帽护尘之服,士皆服衫帽凉衫。
思陵()在维扬(扬州),一时扰乱中遇雨,传旨百官许乘肩舆,因循至此,故制尽泯,今台谏婚事官用凉衫略展登桥,尚存旧制,他处无复见之。
《·舆服志》记载:中兴后,人臣无搭车之制,从祀则以马,常朝则以轿。
旧制,舆檐有禁。
中兴东征西伐,以路途阻险,诏许百官乘轿,王公以下通乘之。
其制:正方,饰有黄、黑二等,凸盖无梁,以篾席为障,左右设牖,前施帘,舁以长竿二,名曰竹轿子,亦曰竹舆。
竹舆,山轿,宋代陈渊诗云:“驿路泥涂一尺深,竹舆高小历千岑。
”《清明上河图》中画有不少轿子,有的轿子上还插满柳枝。
1958年,河南方城宋墓中还出土一乘石质轿子模型,其形状与《清明上河图》中画的相近。
此外,还有简易轿子,如1978年江苏溧阳发现宋代李彬墓,也出土了小型陶制模型,为一把大椅,两旁扎有竹杠,不施帷幔,轿夫二人,皆短衣小帽,一前一后作抬轿姿势。
抬轿的人,叫轿夫,因官品高低的不同,人数也有多少。
随机文章他3次大呼:2个条约不能撕,1个条约不能签,希特勒不听,自食恶果南极无雪干谷之谜,2000米冰层覆盖的南极竟有无雪区照兵马俑为什么不吉利,和兵马俑合影不吉利/秦始皇陪葬品希尔夫妇被外星人绑架事件,外星人绑架人类做研究/真实事件汶川地震是龙脉在移动,四川龙脉诞生出真龙致大地裂开(中华腾飞)