博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异步核心接口IAsyncResult的实现
阅读量:5226 次
发布时间:2019-06-14

本文共 744 字,大约阅读时间需要 2 分钟。

要实现异步编程,就需要正确的实现IAsyncResult接口。IAsyncResult共有四个属性:

public interface IAsyncResult{    object AsyncState { get; }    WaitHandle AsyncWaitHandle { get; }    bool CompletedSynchronously { get; }    bool IsCompleted { get; }}

        

成员

说明

一个可选的应用程序特定的对象,包含有关异步操作的信息。

一个 ,可用来在异步操作完成之前阻止应用程序执行。

一个值,指示异步操作是否是在用于调用 Begin操作名称 的线程上完成,而不是在单独的  线程上完成。

一个值,指示异步操作是否已完成。

         在异步完成时需将IsCompleted属性返回True,AsyncWaitHandle的等待状态设为True,CompletedSynchronously设置为True。也就是说在未完成时这些属性应该均设置为False。在Framework的4.5以前的版本中,大多数实施者不会使用该属性,应该返回False。 从 .NET Framework 4.5开始,请FromAsync方法创建的任务无法完成,如果此属性不正确实现(你将不能享受简化的异步编程async特性)。

         可以使用WaitHandle的WaitOne()属性,阻止当前线程,等待完成后继续执行。如果使用IsCompleted来阻止,可以使用While(!IsCompleted){.......}跳出循环之后继续执行后续代码。

转载于:https://www.cnblogs.com/kingge/p/3463678.html

你可能感兴趣的文章
编程面试的10大算法概念汇总
查看>>
【蒟蒻周报】思维与结论的碰撞 9.17-9.23
查看>>
Load generator连接失败的解决办法!(转)
查看>>
codevs 3295 落单的数
查看>>
STM32 HAL库学习系列第7篇---定时器TIM 输入捕获功能
查看>>
PHP中file_get_contents函数获取带BOM的utf-8,然后json_decode() 返回null的问题
查看>>
SQLServer代理新建或者编辑作业报错
查看>>
LeetCode 搜索二维矩阵 II
查看>>
Python升级3.多
查看>>
算术表达式解析(第一版)
查看>>
java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataProvider
查看>>
兼容各种浏览器的透明层效果
查看>>
软件工程概论课总结
查看>>
UVA11255 Necklace Burnside、组合
查看>>
HDU 2859 Phalanx
查看>>
Docker生产实践(六)
查看>>
机器学习实战5-AdaBoost
查看>>
web-11. 层叠式表的属性与滤镜
查看>>
Vue
查看>>
表变量与临时表的优缺点(转)
查看>>