当前位置: 首页 > news >正文

如何做网站优化 纯外链深圳高端建设网站

如何做网站优化 纯外链,深圳高端建设网站,wordpress4.7.5,IDC网站用什么软件建【.NET Core】深入理解异步编程模型#xff08;APM#xff09; 文章目录 【.NET Core】深入理解异步编程模型#xff08;APM#xff09;一、APM概述二、IAsyncResult接口2.1 BeginInvoke2.2 EndInvoke2.3 IAsyncResult属性2.4 IAsyncResult异步演示 三、通过结束异步操作来…【.NET Core】深入理解异步编程模型APM 文章目录 【.NET Core】深入理解异步编程模型APM一、APM概述二、IAsyncResult接口2.1 BeginInvoke2.2 EndInvoke2.3 IAsyncResult属性2.4 IAsyncResult异步演示 三、通过结束异步操作来阻止应用程序执行四、使用AsyncWaitHandle阻止应用程序的执行五、轮询异步操作的状态六、总结 一、APM概述 APM英文是Asynchronous Programming Model是net 1.0时期就提出的一种异步模式并基于IAsyncResult接口实现Beginxxx和Endxxx的两个方法来实现的Beginxxx方法是开始异步操作Endxxx方法是结束异步操作。 在调用Beginxxx后应用程序可以继续在调用线程上执行指令同时异步操作在另一个线程上执行。每次调用Beginxxx时应用程序还应调用Endxxx来获取操作的结果。 public class Budget {public delegate string FindBudgetDelegate();public string FindBudget() {Thread.Sleep(20000);return $2024年财年预算-预算科目编制.;} }IAsyncResult实现APM static void Main(string[] args) {Budget budget new Budget();Budget.FindBudgetDelegate findBudgetDelegate budget.FindBudget;IAsyncResult asyncResult findBudgetDelegate.BeginInvoke(null,null);string response findBudgetDelegate.EndInvoke(asyncResult);Console.WriteLine(response); }二、IAsyncResult接口 接口IAsyncResult由包含可异步操作的方法的类实现。它是启动操作的方法的返回类型。IAsyncResult当异步操作完成时对象会传递给委托调用AsyncCallback的方法。使用.NET可以以异步方法调用任何方法。首先需要定义一个委托该委托具有与调用的方法相同的签名。公共语言运行时将自动用适当的签名为此委托定义BeginInvoke和EndInvoke方法。 2.1 BeginInvoke BeginInvoke方法启动异步调用。该方法具有与你要异步的方法相同的参数另加两个可选参数。第一个参数是一个AsyncCallBack委托。此委托引用在异步调用完成时要调用的方法。第二个参数是一个用户定义的对象该对象将信息传递到回调方法。BeginInvoke将立即返回而不会等待异步调用完成。BeginInvoke返回可用于监视异步调用的进度的IAsyncResult。 2.2 EndInvoke EndInvoke方法用于检索异步调用的结果。它可以在调用BeginInvoke之后的任意时间调用。如果异步调用尚未结束那么EndInvoke将阻止调用线程直到完成异步调用。EndInvoke的参数包括要异步执行的方法的out和ref参数。 2.3 IAsyncResult属性 序号属性说明1AsyncState获取一个用户定义的对象该对象限定或包含有关异步操作的信息2AsyncWaitHandle获取用于等待异步操作完成的WaitHandle3CompletedSynchronously获取一个值该值指示异步操作是否同步完成4IsCompleted获取一个值该值指示异步操作是否完成 2.4 IAsyncResult异步演示 static void Main(string[] args) {Budget budget new Budget();Budget.FindBudgetDelegate findBudgetDelegate budget.FindBudget;IAsyncResult asyncResult findBudgetDelegate.BeginInvoke(new AsyncCallback(FindOneAsyncCallBack),null);Console.WriteLine(BeginInvoke异步开始);Console.WriteLine($当前主线程{Thread.CurrentThread.Name});Console.WriteLine($Main-{asyncResult.AsyncState});Console.WriteLine(WaitOne);Console.ReadKey(); }static void FindOneAsyncCallBack(IAsyncResult asyncResult) {Budget.FindBudgetDelegate budgetDelegate ((AsyncResult)asyncResult).AsyncDelegate as Budget.FindBudgetDelegate;Console.WriteLine(budgetDelegate.EndInvoke(asyncResult));Console.WriteLine($FindOneAsyncCallBack-{asyncResult.AsyncState}); }三、通过结束异步操作来阻止应用程序执行 如果应用无法在等待异步操作结果期间继续执行其他工作必须阻止应用一直到操作完成。可以使用下列方法之一在应用等待异步操作完成期间阻止应用的主程序 调用异步操作的EndOperationName方法。使用异步操作的BeginOperationName方法返回的IAsyncResult的AsyncWaitHandle属性。 在异步操作完成前使用EndOperationName方法阻止的应用程序通常会调用BeginOperationName方法执行任何不需要等待操作结果也可以执行的工作然后调用EndOperationName。 static void Main(string[] args) {Budget budget new Budget();Budget.FindBudgetDelegate findBudgetDelegate budget.FindBudget;IAsyncResult asyncResult findBudgetDelegate.BeginInvoke(null,null);string response findBudgetDelegate.EndInvoke(asyncResult);Console.WriteLine(response); }四、使用AsyncWaitHandle阻止应用程序的执行 在异步操作完成前使用一个或多个WaitHandle对象阻止的应用通常会调用BeginOperationName方法,执行任何不需要等待操作结果也可以执行的工作并在一个或多个异常操作完成前一直处于阻止状态。可以使用AsyncWaitHandle调用WaitOne方法之一对单一操作阻止应用。若要在等待一组异步操作完成期间阻止应用请将关联的AsyncWaitHandle对象存储到数组中并调用WaitAll方法之一。若要在等待一组异步操作中任一操作完成期间阻止应用。请将关联的AsyncWaitHandle对象存储到数组中并调用WaitAny方法之一。 static void Main(string[] args) {Budget budget new Budget();Budget.FindBudgetDelegate findBudgetDelegate budget.FindBudget;IAsyncResult asyncResult findBudgetDelegate.BeginInvoke(null,null);// Wait until the operation completesasyncResult.AsyncWaitHandle.WaitOne();string response findBudgetDelegate.EndInvoke(asyncResult);Console.WriteLine(response); }五、轮询异步操作的状态 如果应用可以在等待异步操作结果期间继续执行其他工作不得阻止应用一直到操作完成。请使用下列方法之一在应用等待异步操作完成期间继续执行指令 使用返回IAsyncResult的IsCompleted属性确定操作是否已完成。这种方法称为轮询。使用AsyncCallBack委托在单独的线程中处理异步操作结果。 六、总结 使用委托可通过异步方式调用同步方法。 如果同步调用委托Invoke 方法将在当前线程上直接调用目标方法。 如果调用 BeginInvoke 方法公共语言运行时 (CLR) 将对请求进行排队并立即返回给调用方。 目标方法将在线程池中的某个线程上异步调用。 提交请求的原始线程可以不受限制地继续与目标方法并行执行。 如果已在对 BeginInvoke 方法的调用中指定回叫方法则目标方法结束时将调用回叫方法。 在回叫方法中EndInvoke 方法将获取返回值和所有输入/输出或仅输出参数。 如果调用 BeginInvoke 时未指定回叫方法则可能从调用 BeginInvoke 的线程上调用 EndInvoke。
http://www.dnsts.com.cn/news/173421.html

相关文章:

  • 个人网站制作设计百度模拟点击
  • 算命网站开发网站建设哪里公司好
  • 万柳网站建设设计公司上市企业
  • 百度商桥怎么和网站网站做好后怎么更新内容
  • 题库网站开发申请企业邮箱步骤是什么?
  • 东莞建设企业网站电子商城网站开发合同
  • 精品建设课程网站成都城乡建设部网站首页
  • asp程序制作网站烟台企业网站建站模板
  • 上海市建设工程 安全协会网站莱州网站建设案例
  • 建设银行网站首页打阿里云esc 可以做几个网站
  • 怎么查看网站的dns房地产营销策划
  • 中国建设工程信息网官方网站前端怎么做网站
  • 做影视网站难吗制作一个网站需要多少时间
  • 提出网络营销思想的网站改版计划贵阳查房子备案的网站
  • 免费门户网站系统微网站建设哪家优惠
  • 网站检测报告哪里做奉化云优化seo
  • 个体营业执照可以做网站嘛开发网站的过程
  • 甘肃省专业做网站导航wordpress主题
  • 微信小程序一站式开发建设山东公司网站
  • 性价比高的做网站公司阿里云 iis 默认网站
  • 知名网站开发多少钱农村自建房设计图 效果图
  • 江门网站建设系统做网站代理需要办什么执照
  • 久久建筑下载网网站品牌词优化怎么做
  • 网站建设pdf微盘短视频推广方式有哪些
  • 如何做淘宝cms导购网站智慧团建密码一般是什么
  • 保险咨询网站建设有没有学室内设计的学校
  • 网站空间免费吗天元建设集团有限公司安全管理制度
  • wordpress网站 800cdn电子商务网站建设与维护题库
  • 使用wordpress快速建站视频教程phpcms调用网站名称
  • 网站服务器如何管理女生学电子商务好吗