C#方法延迟返回结果
2012-09-24 21:25
162 查看
不知道标题恰不恰当,只不过我的需求是这个样子的:
例如一个方法A,返回值是bool类型的,但是方法执行过程中,需要另一个方法B执行结束,但是还不能直接调用B方法,可是B是等待外部信号才执行。所以需要延迟一下,等B方法执行了才返回结果。
找了些资料,找到了AutoResetEvent,可以达到我的目的,但是否是最适合的,就不知道了,由于我的项目中所谓的B方法是RS232端口读数据的,然后解析出来的返回值。并不是时时的,可能有点时间差,于是我采用了下面的方式。
原文地址:http://luacloud.com/2012/c-sharp-method-to-delay-their-return-results.html
例如一个方法A,返回值是bool类型的,但是方法执行过程中,需要另一个方法B执行结束,但是还不能直接调用B方法,可是B是等待外部信号才执行。所以需要延迟一下,等B方法执行了才返回结果。
找了些资料,找到了AutoResetEvent,可以达到我的目的,但是否是最适合的,就不知道了,由于我的项目中所谓的B方法是RS232端口读数据的,然后解析出来的返回值。并不是时时的,可能有点时间差,于是我采用了下面的方式。
原文地址:http://luacloud.com/2012/c-sharp-method-to-delay-their-return-results.html
/// <summary> /// 标志位,用来等待返回 /// </summary> <span class="wp_keywordlink_affiliate"><a href="http://luacloud.com/tag/autoresetevent" title="查看 AutoResetEvent 中的全部文章" target="_blank">AutoResetEvent</a></span> are = new <span class="wp_keywordlink_affiliate"><a href="http://luacloud.com/tag/autoresetevent" title="查看 AutoResetEvent 中的全部文章" target="_blank">AutoResetEvent</a></span>(false); /// <summary> /// 返回结果,可以是任意需要的类型 /// </summary> object result; public object A() { /****Begin**/ /* * 数据的拼装 * 数据的发送 **/ Send("要传输的数据"); /****End****/ //等待信号,-1代表无限等待,可以更改为其他值,单位是毫秒,等待时间过后为超时 are.WaitOne(-1, false); return result; } private void B() { byte[] bytes = Read(); /* * 此处解析bytes中的数据 * 根据解析出来的数据 * 得到想要的结果 * */ //得到需要的结果 result = Encoding.UTF8.GetString(bytes); //给信号 are.Set(); }
相关文章推荐
- asp.net C# 一个方法返回多个结果
- C#反射动态调用dll中的方法,并返回结果
- C#反射动态调用dll中的方法,并返回结果[转]
- C#反射动态调用dll中的方法,并返回结果
- C#执行CMD命令并接收返回结果的实现方法
- C#反射动态调用dll中的方法,并返回结果
- c# List find()方法返回值的问题说明(返回结果为对象的指针)
- C#执行CMD命令并接收返回结果的实现方法
- C#反射动态调用dll中的方法,并返回结果
- c# List find()方法返回值的问题(返回结果为对象的指针)
- C#反射动态调用dll中的方法,并返回结果
- C# web api返回类型设置为json的两种方法
- c#使用Web服务返回图片数据的方法
- json返回hibernate的结果会自动调用(get)查询出关联表的数据,解决方法
- 用.NET C# 发送HTTP 请求,返回结果
- C#调用C++方法,C#使用c++方法返回类或结构体
- C# web api返回类型设置为json的两种方法
- C#--2.继续在该类中编写一下方法,名称为Reconvert,参数一个,但可以是字符串、整数、单精度、双精度,方法功能返回参数的逆序。
- C#解决串口通信中接收数据时延迟处理与缓存处理的方法
- 使用MyBatis指定返回结果与实体属性相对应的方法