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

兼职网站排行怎么做业务推广技巧

兼职网站排行,怎么做业务推广技巧,华夏润达建设有限公司网站,旅游类网站设计本文内容 任务和异步编程模型 (APM)任务和基于事件的异步模式 (EAP)任务和等待句柄 .NET 中异步模式的简短历史记录#xff1a; .NET Framework 1.0 引进了 IAsyncResult 模式#xff0c;也称为异步编程模型 (APM) 或 Begin/End 模式。.NET Framework 2.0 增加了基于事件的…本文内容 任务和异步编程模型 (APM)任务和基于事件的异步模式 (EAP)任务和等待句柄 .NET 中异步模式的简短历史记录 .NET Framework 1.0 引进了 IAsyncResult 模式也称为异步编程模型 (APM) 或 Begin/End 模式。.NET Framework 2.0 增加了基于事件的异步模式 (EAP)。.NET Framework 4 引进了基于任务的异步模式 (TAP)它取代了 APM 和 EAP并能够轻松构建从早期模式中迁移的例程。 1、任务和异步编程模型 (APM) 1.1 从 APM 到 TAP 因为异步编程模型 (APM) 模式的结构合理而且能够轻松生成包装将 APM 实现公开为 TAP 实现。 .NET Framework 4 及更高版本包含采用 FromAsync 方法重载形式的帮助器例程来实现这种转换。 请考虑 Stream 类及其 BeginRead 和 EndRead 方法它们代表与同步 Read 方法对应的 APM public int Read(byte[] buffer, int offset, int count)public IAsyncResult BeginRead(byte[] buffer, int offset,int count, AsyncCallback callback,object state)public int EndRead(IAsyncResult asyncResult)可以使用 TaskFactoryTResult.FromAsync 方法来实现此操作的 TAP 包装如下所示 public static Taskint ReadAsync(this Stream stream,byte[] buffer, int offset,int count) {if (stream null)throw new ArgumentNullException(stream);return Taskint.Factory.FromAsync(stream.BeginRead,stream.EndRead, buffer,offset, count, null); }此实现类似于以下内容 public static Taskint ReadAsync(this Stream stream,byte [] buffer, int offset,int count){if (stream null)throw new ArgumentNullException(stream);var tcs new TaskCompletionSourceint();stream.BeginRead(buffer, offset, count, iar {try {tcs.TrySetResult(stream.EndRead(iar));}catch(OperationCanceledException) {tcs.TrySetCanceled();}catch(Exception exc) {tcs.TrySetException(exc);}}, null);return tcs.Task; }1.2 从 TAP 到 APM 如果现有的基础结构需要 APM 模式则还需要采用 TAP 实现并在需要 APM 实现的地方使用它。 由于任务可以组合并且 Task 类实现 IAsyncResult你可以使用一个简单的 helper 函数执行此操作。 以下代码使用 TaskTResult 类的扩展但可以对非泛型任务使用几乎相同的函数。 public static IAsyncResult AsApmT(this TaskT task,AsyncCallback callback,object state) {if (task null)throw new ArgumentNullException(task);var tcs new TaskCompletionSourceT(state);task.ContinueWith(t {if (t.IsFaulted)tcs.TrySetException(t.Exception.InnerExceptions);else if (t.IsCanceled)tcs.TrySetCanceled();elsetcs.TrySetResult(t.Result);if (callback ! null)callback(tcs.Task);}, TaskScheduler.Default);return tcs.Task; }现在请考虑具有以下 TAP 实现的用例 public static TaskString DownloadStringAsync(Uri url)并且想要提供此 APM 实现 public IAsyncResult BeginDownloadString(Uri url,AsyncCallback callback,object state)public string EndDownloadString(IAsyncResult asyncResult)以下示例演示了一种向 APM 迁移的方法 public IAsyncResult BeginDownloadString(Uri url,AsyncCallback callback,object state) {return DownloadStringAsync(url).AsApm(callback, state); }public string EndDownloadString(IAsyncResult asyncResult) {return ((Taskstring)asyncResult).Result; }2、任务和等待句柄 2.1 从等待句柄到 TAP 虽然等待句柄不能实现异步模式但高级开发人员可以在设置等待句柄时使用 WaitHandle 类和 ThreadPool.RegisterWaitForSingleObject 方法实现异步通知。 可以包装 RegisterWaitForSingleObject 方法以在等待句柄中启用针对任何同步等待的基于任务的替代方法 public static Task WaitOneAsync(this WaitHandle waitHandle) {if (waitHandle null)throw new ArgumentNullException(waitHandle);var tcs new TaskCompletionSourcebool();var rwh ThreadPool.RegisterWaitForSingleObject(waitHandle,delegate { tcs.TrySetResult(true); }, null, -1, true);var t tcs.Task;t.ContinueWith( (antecedent) rwh.Unregister(null));return t; }使用此方法可以在异步方法中使用现有 WaitHandle 实现。 例如若要限制在任何特定时间执行的异步操作数可以利用信号灯System.Threading.SemaphoreSlim 对象。 可以将并发运行的操作数目限制到 N方法为初始化到 N 的信号量的数目、在想要执行操作时等待信号量并在完成操作时释放信号量 static int N 3;static SemaphoreSlim m_throttle new SemaphoreSlim(N, N);static async Task DoOperation() {await m_throttle.WaitAsync();// do workm_throttle.Release(); }还可以构建不依赖等待句柄就完全可以处理任务的异步信号量。 若要执行此操作可以使用 使用基于任务的异步模式 中所述的用于在 Task。 2.2 从 TAP 到等待句柄 正如前面所述 Task 类实现 IAsyncResult且该实现公开 IAsyncResult.AsyncWaitHandle 属性该属性会返回在 Task 完成时设置的等待句柄。 可以获得 WaitHandle 的 Task 如下所示 WaitHandle wh ((IAsyncResult)task).AsyncWaitHandle;
http://www.hkea.cn/news/14373273/

相关文章:

  • 长沙专业网站建设怎么做如何做网站内容管理
  • html5手机资讯网站模板杭州网站建设培训
  • 腾讯云如何建设网站域名注册服务
  • 备案期间 需要关闭网站吗wordpress如何制作二维码
  • 做网站需要哪些证书wordpress 社区插件
  • asp网站用什么做编程培训机构找极客时间
  • 小城镇建设期刊网站网站qq联系怎么做
  • 官方网站建设合同济宁定制网站建设推广
  • 做网站推广如何徐州网站设计价位
  • 建设网站贵吗深圳汇网网站建设
  • 仓山福州网站建设视觉设计就业方向
  • 南京好的网站设计公司百度云搜索引擎官方入口
  • 高质量的邯郸网站建设微信公众号1000阅读量多少钱
  • 安防监控网站模板培训方案
  • 如何做点击赚钱的网站什么网站空间稳定
  • 一键网站建站系统做期货财经网站需要哪些资质
  • 绘制网站结构图西乡做网站多少钱
  • 青州网站建设青州模板网站建设价位
  • 企业企业网站建wordpress404文件不存在
  • 南宁网站建设公司排行少儿编程老师需要具备什么条件
  • 网站文件上传完成后打开网站显示网站建设中怎么回事?招标网哪个好并且免费
  • 网站开发总结简写网站建设用英语怎么说
  • 湖北随州住房和城乡建设部网站做网站的法律
  • 建设部网站撤销注册资质的都是公职人员吗网站开发人员名片
  • 苏州网站建设制作公司建设的网站打开速度很慢
  • wordpress全站网易云音乐播放做电商的需要学哪些东西
  • 公司企业网站制作湖北省交通建设监理协会网站
  • 海南网站搭建网站建设需要敲代码吗
  • 怎么建设网站最便宜初中做网站软件
  • 个人网站备案的好处网站备案信息如何下载