四种方式实现.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,异步,编程,实例,代码,苹果手机微信如何实现分身功能
工具原料:品牌型号:iPhone 12操作系统版本:iOS 14.5软件版本:微信 8.0.0一、分身功能的介绍1、分身功能的定义2、分身功能的作用3、分身功能的优势二、实现分身功能的方法1、使用微信官方提供的分身功能步骤:(1)打开微信应用,进入“我”页面(2)点击右上角的设置按钮(3)在设置页面中,找到“分身管理”选项(4)按照提示进行分身设置2、使用第三方应用实现分身功能步骤:(1)在App Store中搜索并下载第三方分身应用(2)安装并打开应用(3)根据应用的指引,进行分身设置(4)在分身应用中登录微信账号,即可实现分身功能三、分身功能的应用场景1、工作与生活分离2、保护隐私信息3、多账号管理四、结论通过苹果手机微信的分身功能,用户可以方便地实现多账号管理、保护隐私信息等目的。
无论是工作与生活的分离,还是隐私信息的保护,分身功能都具有重要的价值和意义。
未来,可以进一步研究和改进分身功能,提供更多个性化的设置选项,以满足用户不同的需求。
华硕Win7升级Win8,轻松实现系统升级
软件支持 在线重装、U盘制作、自定义重装 等多种模式。
简介:华硕Win7升级Win8,轻松实现系统升级,是一篇针对华硕电脑用户的操作指南。
随着Windows 8的发布,许多用户希望将自己的电脑系统升级到最新版本,以享受更好的功能和性能。
本文将介绍如何使用华硕电脑进行Win7升级Win8的方法和步骤,帮助用户轻松实现系统升级。
工具原料:品牌型号:华硕电脑(具体型号根据用户实际情况而定)操作系统版本:Windows 7软件版本:Windows 8一、备份重要数据1、在进行系统升级之前,首先需要备份重要的个人数据,以防升级过程中数据丢失。
可以将重要文件、照片、视频等复制到外部存储设备或云存储中。
二、检查硬件兼容性1、在升级之前,需要确保电脑的硬件兼容性。
可以访问华硕官方网站或联系客服,查询自己的电脑型号是否支持Windows 8系统。
2、如果电脑硬件不兼容,可以考虑升级硬件或选择其他操作系统。
三、下载并安装Windows 81、访问微软官方网站,下载适用于华硕电脑的Windows 8安装文件。
2、双击安装文件,按照提示进行安装。
在安装过程中,可以选择保留个人文件和应用程序,或者进行全新安装。
四、完成系统设置1、安装完成后,根据提示进行系统设置,包括选择语言、时区、网络连接等。
2、登录Microsoft账户,激活Windows 8系统。
总结:通过本文介绍的方法和步骤,华硕Win7用户可以轻松实现系统升级到Windows 8。
在升级之前,记得备份重要数据,并检查电脑的硬件兼容性。
下载并安装Windows 8后,完成系统设置即可享受新系统带来的功能和性能提升。
标签: 注意:本站所刊载的文章均为学习交流之用,请勿用于商业用途。
对于商业使用,请联系各自版权所有者,否则法律问题自行承担。
Win7系统升级指南:全面解析升级步骤与要点 Win7系统损坏修复教程:详细步骤助你快速解决问题 华硕Win7升级Win8,轻松实现系统升级 分类于: 回答于:2024-02-09 简介:华硕Win7升级Win8,轻松实现系统升级,是一篇针对华硕电脑用户的操作指南。
随着Windows 8的发布,许多用户希望将自己的电脑系统升级到最新版本,以享受更好的功能和性能。
本文将介绍如何使用华硕电脑进行Win7升级Win8的方法和步骤,帮助用户轻松实现系统升级。
工具原料:品牌型号:华硕电脑(具体型号根据用户实际情况而定)操作系统版本:Windows 7软件版本:Windows 8一、备份重要数据1、在进行系统升级之前,首先需要备份重要的个人数据,以防升级过程中数据丢失。
可以将重要文件、照片、视频等复制到外部存储设备或云存储中。
二、检查硬件兼容性1、在升级之前,需要确保电脑的硬件兼容性。
可以访问华硕官方网站或联系客服,查询自己的电脑型号是否支持Windows 8系统。
2、如果电脑硬件不兼容,可以考虑升级硬件或选择其他操作系统。
三、下载并安装Windows 81、访问微软官方网站,下载适用于华硕电脑的Windows 8安装文件。
2、双击安装文件,按照提示进行安装。
在安装过程中,可以选择保留个人文件和应用程序,或者进行全新安装。
四、完成系统设置1、安装完成后,根据提示进行系统设置,包括选择语言、时区、网络连接等。
2、登录Microsoft账户,激活Windows 8系统。
总结:通过本文介绍的方法和步骤,华硕Win7用户可以轻松实现系统升级到Windows 8。
在升级之前,记得备份重要数据,并检查电脑的硬件兼容性。
下载并安装Windows 8后,完成系统设置即可享受新系统带来的功能和性能提升。
菜科网系统致力于解决 Windows 系统重装解决方案,提供高效、安全、免费的系统重装服务。