重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天就跟大家聊聊有关怎么在C#项目中实现异步调用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
创新互联建站专注于崇明网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供崇明营销型网站建设,崇明网站制作、崇明网页设计、崇明网站官网定制、微信小程序开发服务,打造崇明网络公司原创品牌,更为您提供崇明网站排名全网营销落地服务。具体内容如下
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Threading.Tasks; namespace AsyncAppTest { ////异步调用示例详解 /// 第1步:定义委托;此委托的返回值、参数类型必须与要调用的异步方法一致; /// public delegate TaskAsyncSendMail(string rece, string copyer, string subj, string body); class DelegateTest { //定义委托变量 AsyncSendMail sendMail = null; //异步方法的回调方法 //回调方法必须要有类型为 IAsyncResult的参数, //以获取开始异步 BeginInvoke的调用结果 void BackCall(IAsyncResult parameter) { //parameter.IsCompleted用于判断异步方法是否已调用完成; if(parameter.IsCompleted) { //通过EndInvoke方法获取异步方法的返回结果(类型与异步方法的结果一致) Task message = sendMail.EndInvoke(parameter); Console.Write(string.Format("回调完成,返回值:{0}", message.Result)); } else { Console.Write("调用未完成"); } } public string AsyncSendMailHandler( string rece, string copyer, string sub, string body) { //WcfTest.MailServiceClient 是服务器上的Wcf服务,是本示例内要调用的异步方法 WcfTest.MailServiceClient sc = new WcfTest.MailServiceClient(); //将异步方法与委托关联 sendMail = new AsyncSendMail(sc.SendEmailAsync); string s = null; //以下BeginInvoke方法在调用时,先将 SendEmailAsync的参数传入,BackCall是回调方法,s在此处的作用未弄明白, //但参数中不可省略 // 异步是相对于委托实例所在线程的,本示例中是指sendMail与sc.MailServiceClient不是一个线程; sendMail.BeginInvoke(rece, copyer, sub, body, BackCall, s); return s; } } class Program { static void Main(string[] args) { DelegateTest test = new DelegateTest(); test.EventCompleteHandle("gqpeng@cmhit.com", null, "测试邮件", "测试邮件"); Console.Write("上面是异步开始调用"); Console.Read(); } } }
另:以下是Invoke与BeginInvoke的区别。
Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托。
Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托。
看完上述内容,你们对怎么在C#项目中实现异步调用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联网站建设公司行业资讯频道,感谢大家的支持。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。